0

我正在通过 and 管理 iFrame 树(全部嵌套在一个页面上)idsrc因此对于给定的src我可以返回一个指向该 iFrame 的元素数组,如下所示:

["document", "123123", "dasd321"]

由于我的数组中的元素数量是动态的,我现在想构造一个选择器来检索窗口以将 postMessage 发送到。所以我需要这样的东西:

document
    .getElementById("123123").contentWindow
    .getElementById("dasd321").contentWindow
    ...
    ... postMessage({"foo":"bar"}, window.location.href);

动态构建。

问题
是否有可能通过遍历数组来生成动态选择器?如果是或不是,我将如何处理?

谢谢!

4

3 回答 3

1

这可以通过以下方式轻松完成:

["document", "123123", "dasd321"].forEach(function(o){
    document.getElementById(o).contentWindow //and so on
});

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FArray%2FforEach

于 2013-05-31T08:08:37.040 回答
1

你可以使用querySelectorAll

var elements = ['#document', '#123123', '#dasd321'];
elements = document.querySelectorAll(elements.join(','));

[].forEach.call(elements, function(element) {
  // do something with `element`
});
于 2013-05-31T08:12:32.113 回答
1
target = ["document", "123123", "dasd321"].reduce (function (tgt, o) {
  return tgt && tgt.getElementById (o);
}, document);

应该做的伎俩。如果您的任何组件不存在,则返回 null

于 2013-05-31T08:46:35.900 回答