13

重複の可能性:
IE/Chrome: DOM ツリー要素はグローバル変数ですか?

ブラウザーで予期しない、しかし便利な動作に遭遇しました。それは、HTML コードで ID を持つすべての要素に対して変数を作成します。だから私が持っているとき:

<div id="ohlala"> ... </div>

ブラウザはこのコードを裏で実行しているようです:

var ohlala = document.getElementById("ohlala");

そのため、次の方法でその要素のテキストを簡単に変更できます。

ohlala.innerHTML="test"

オンラインで試してみてください: http://jsfiddle.net/Facby/document.getElementById()問題は、なぜ自分でビット を書く必要があるのでしょうか? そのコードはどの程度移植可能ですか? Opera、FireFox、Chrome で試してみましたが、うまくいきました。この機能は信頼できますか? ブラウザは、id を持つすべての要素に対して常に変数を作成しますか? その場合、JavaScript コードで使用される名前が HTML の類似の ID と競合しないように、より注意する必要がありますよね?

4

1 に答える 1

5

ID を持つ要素を作成する場合、「ウィンドウ」オブジェクトは特定の属性を受け取ります。そのため、変数を直接使用できます。この動作は推奨されておらず、通常は次のようwindow.ohlala.innerHTML = "..."に記述されます:ただし、最新の Web サイトで使用することはお勧めしません。常に .getElementById() メソッドを使用してください。このメソッドは W3C 標準の一部であり、最新のすべてのブラウザー、非常に古いバージョンのブラウザー、および IE7 未満で使用できます。効果がないでしょう。DOM (Document Object Model) の詳細については、https ://developer.mozilla.org/en-US/docs/DOM をご覧ください。

于 2012-09-20T10:16:57.340 に答える