2009-07-02 10 views
5

私が知る限り、document.getElementById( 'myId')は、ドキュメント内に既に存在するHTML要素だけを探します。 JSを使って新しい要素を作成したとしますが、まだドキュメント本体に追加していないとします。通常、getElementByIdを使用しているように、この要素にアクセスできる方法はありますか?DOM内にまだ存在しない要素に対しては、getElementByIdを使用しますか?

var newElement = document.createElement('div'); 
newElement.id = 'myId'; 
// Without doing: document.body.appendChild(newElement); 
var elmt = document.getElementById('myId'); // won't work 

回避策はありますか? (私は、この特定の要素への参照を保存したくないということを伝える必要があります。そのため、Idを介してアクセスする必要があります)

ありがとうございました!

+0

作成した場合は、オブジェクトを他の関数に渡して直接アクセスするだけですか? –

+0

@s_hewitt:これはOPには当てはまりませんが、あなたが私のようなものであれば、その言葉に言及していないので、あなたは "それを渡す"ことはできません。 (あなたはinnerHTMLまたはそれに相当するライブラリを使って作成しました。)その場合、参照を取得しようとしていますが、getElementByIdは誤って間違ったオブジェクトに置かれています。 – Thanatos

答えて

5

文書の一部でない場合は、document.getElementByIdを使用して取得することはできません。 getElementByIdはDOMルックアップを実行するので、その要素はツリー内に存在しなければなりません。フローティングDOM要素を作成すると、その要素は単にメモリ内に存在し、DOMからアクセスできません。可視にするにはDOMに追加する必要があります。

後で要素を参照する必要がある場合は、別の関数への参照を渡すだけです.JavaScript内のすべてのオブジェクトは参照によって渡されるため、別の関数内からそのフローティングDOM要素を処理すると、

+0

OK、thx all!私はdocument.createElement( 'div')を実行することで、私の要素は何らかの形でリストやツリーで参照されますが、すべての非添付要素が参照されます...これは事実ではないと思いますIDなしでこれを行います。 –

0

getElementByIdは、ドキュメントオブジェクトのメソッドです。ドキュメントには何も返さないでしょう。

リファレンスを保存していない場合は、あなたがidによって空気から魔法のように引き出すことができれば、その空気はそれを参照することになります。

0

作成した場合は、オブジェクトを他の関数に渡して直接アクセスするだけですか?

関連する問題