3

ノードのクローンを作成しましたが、そのクローンノード内のdivの属性を設定または変更したいのですが、具体的にはiddiv id="test0"

私はこれに関するドキュメントを見つけることができません、そこにいるまっすぐなJavaScriptの人は解決策を知っていますか?

var c = document.getElementById("stone-opt0"),
cloned = c.cloneNode(true);

//CODE THAT DOESN'T WORK
cloned.getElementById("test0").id = "new-id";

私が行っているのは、アイテムの大きなリストをループし、これらのアイテムをドキュメントフラグメントに配置し、それを一度ページにプッシュすることです...各要素をページに追加し、添付後に変更するのではなく、これを実行していますDOMへ(どちらが速いでしょう?)

4

2 に答える 2

5

getElementById要素ノードのコンテキストを呼び出そうとしています。これは不可能です。getElementByIdメソッドはdocumentノードにのみ存在します(id値はドキュメントに固有である必要があるため)。対照的に、要素のコンテキストに基づいて実行することgetElementsByTagNameもできます。querySelectorAll

したがって、querySelectorAllIE8など、このメソッドをサポートしていないブラウザーをサポートしなくてもかまわない限り、このメソッドを使用してこれを行うことができます。

cloned.querySelectorAll('[id="test0"]')[0].id = "new-id";
于 2012-09-14T20:37:33.990 に答える
0

DOMに接続してcloned.getElementById("test0").id = "new-id" から試してみましたか?DOMの一部ではないものを探している場合は、気難しいことがあります。そして、私が「フィニッキー」と言うとき、私は「一般的にフラットアウトは機能しない」という意味です。clonedgetElementById()

ページ上に非表示の要素(のような<div style="display:none">)を作成し、それにアタッチclonedして、準備ができるまでページに表示されないようにすることができます。

于 2012-09-14T20:32:23.403 に答える