0

私は 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
target = ["document", "123123", "dasd321"].reduce (function (tgt, o) {
  return tgt && tgt.getElementById (o);
}, document);

トリックを行う必要があります。コンポーネントが存在しない場合は null を返します

于 2013-05-31T08:46:35.900 に答える
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 に答える