2009-05-28 16 views
0

私は伝統的にJavaScriptを「UI接着剤」として使用してきましたが、残念ながらJSを「おもちゃ」と見なしていました。しかし、私はコースを変更し、特にJSON/jQueryと組み合わせて使用​​する際に、本当のパワーを見出しています。DOMに挿入した後の要素への参照を維持する

私の質問には、要素を動的に作成し、それをDOMに追加することが含まれます。これが起こると、オブジェクトのコピーだけがDOMに追加され、そのオブジェクトへの参照が失われるようです。例えば、createElement( "a")を使ってグローバルオブジェクトを作成し、いくつかの属性( "href"、 "title"など)を設定してDOMに追加すると、グローバルオブジェクトへの元の参照追加された要素には影響しません。私はちょうど私が挿入したオブジェクトを見つけることができたと確信していますが、これははるべき作業よりも多くの作業のようです。何か不足していますか?

答えて

0
var new_div = document.createElement('div'); 
new_div.id = 'foo'; 

EDIT:あなたの質問をもう一度読んで、あなたはappendChildの後にnew_divが機能しないと言っていますか?私はそれがすべきだと確信しています。 innerHTMLやそれ以外の何かで追加していないのですか?

多分、あなたのvarはあなたがそれを読もうとしている範囲から落ちています。 (つまり、ある関数でそれを作成し、別の関数から読み込んでいますか?)オブジェクトをグローバルに宣言してみてください。

+0

問題が見つかりました。私は、不思議なことに "setAttribute"を使ってオブジェクトの属性を設定しようとしていました。それはIEは非常に多くのもののためにそれを好きではないようだ。例えば、el.style.color = 'green'は動作し、el.setAttribute( "style"、 "color:green;")は失敗します。 – BradBrening

+0

はい、8より前のバージョンのIEではサポートされていないHTML属性がいくつかあります(特にクラスとスタイル)。しかし、それはほとんど問題ではないはずです。スタイル属性はelem.styleプロパティで設定する必要があり、クラスはelem.classNameプロパティで設定する必要があります。 –

0

元のグローバル参照は正常に動作するはずです。あなたはそれで何をしようとしていますか?サンプルコードはありますか?

0

あなたは、これが問題かもしれません?、ネイティブのDOMオブジェクトをラップしているライブラリか何かを使用しています...

0

すべてのオブジェクトは、JavaScriptで参照によって渡され、HTMLNodesも例外ではありませんされています。元の参照は、別の値を割り当てるまで、常に機能する必要があります。スコープの問題があるように聞こえます。コードを見ることができますか?

関連する問題