DOMで[まだ]でない要素のためにgetElementByIdを使用しますか?
-
21-08-2019 - |
質問
私の知る限りのdocument.getElementById(「MYIDは」)のみ文書に既にあるHTML要素を探します。のは、私はJSを経由して新しい要素を作成しましたが、私は、文書本体にはまだそれを付加していないことが、私は通常、getElementByIdをとするだろうように私は、そのIDによって、この要素にアクセスすることができる方法がありますされるとしましょう?
var newElement = document.createElement('div');
newElement.id = 'myId';
// Without doing: document.body.appendChild(newElement);
var elmt = document.getElementById('myId'); // won't work
そのための回避策はありますか?
(私は自分のID経由でアクセスする必要がある理由です、私はこの特定の要素への参照を保存したくないことを伝える必要があります)ありがとうございます!
解決
それは文書の一部ではない場合は、
、あなたはdocument.getElementById
を使用してそれをつかむことができません。 getElementById
は、DOMのルックアップを行い、そのツリーになければならない要素が発見されます。あなたは浮動DOM要素を作成した場合、それは単にメモリに存在し、DOMからはアクセスできません。それは目に見えるようにDOMに追加する必要があります。
あなたは後で要素を参照する必要がある場合は、単に別の関数への参照を渡す - JavaScriptですべてのオブジェクトは参照渡しされているので、別の関数内からその浮動DOM要素に取り組むことは、オリジナルではなく、コピーを変更し、<。 / P>
他のヒント
getElementByIdをドキュメントオブジェクトのメソッドです。これは、ドキュメントにない何かを返すことはないだろう。
の参照を格納しないで、ハァッ?あなたは魔法のidで空気からそれを引くことができれば、その後、空気はそれへの参照になります。
あなたはそれを作成した場合は、単に他の関数にオブジェクトを渡し、直接アクセス?
function createDiv()
{
var newElement = document.createElement('div');
doWorkWithDiv(newElement);
}
function doWorkWithDiv(element)
{
element.className = 'newElementCSS';
element.innerHTML = 'Text inside newElement';
addToDoc(element);
}
function addToDoc(element)
{
document.body.appendChild(element);
}
所属していません StackOverflow