我可以从元素数组中创建Javascript选择器吗?

时间:2013-05-31 08:04:22

标签: javascript arrays loops iframe selector

我正在idsrc管理iFrames树(全部嵌套在页面上),因此对于给定的src,我可以返回导致此内容的元素数组iFrame,就像这样:

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

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

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

动态构建。

问题
是否有可能通过循环数组生成动态选择器?如果是,如果没有,我将如何解决这个问题?

谢谢!

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您可以使用querySelectorAll

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

[].forEach.call(elements, function(element) {
  // do something with `element`
});

答案 2 :(得分:1)

target = ["document", "123123", "dasd321"].reduce (function (tgt, o) {
  return tgt && tgt.getElementById (o);
}, document);

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