2009-07-08 20 views
3

今日、私はJavascriptのDOM要素にそのIDだけでアクセスする可能性を見つけました。IDで直接DOM要素にアクセスする際の欠点は何ですか?

elementid.style.backgroundColor = "blue" 

IE、Firefox、Chromeで動作するかどうかは、非常に短いスニペットでテストしました。ダイレクトアクセスの欠点が何であるかと($()同様または類似のフレームワークの交換)document.getElementById('elementid')を使用すべき場合に

<html><head> 
<script> 
    function highlight() { 
     content.style.backgroundColor = "blue"; 
     content.style.color = "white"; 
    } 
</script> 
</head> 
<body> 
    <div id="content">test content</div> 
    <div onclick="highlight()">highlight content</div> 
</body></html> 

は、だから私は疑問に思っ: は、ここで私が使用しスニペットです。

これに関する有用な文書は見つかりませんでした。どこでもgetElementByIdまたはフレームワークメソッドが使用されます。

+0

のようなIDを使用することはできません(2)。 –

答えて

7

マイクロソフト社のグッビブルです。特に標準モードでは—のブラウザではうまくいきません(標準モードではwidthのような不一致がquirks modeで間違っています)。

4

名前空間についても心配する必要があります。今では、グローバル名空間の変数であるかのように扱います。あなたやあなたのライブラリには、DOM idと同じ名前のグローバル変数を宣言してはいけません。ハイライト機能も同じです。

また、ダッシュ記号付きのIDは完全に有効ですが、この方法ではアクセスできません。

<div id="container-wrapper"><div id="container"> ... </div></div>

container-wrapper.style.colorになり、containerからwrapper.style.colorを減算しようとします。

2

これは標準の一部ではありません。また、単純な変数を上書きすることもできます。 Var contentはあなたのスクリプトや外部ライブラリの任意の場所で再宣言することができます(そして、はい、私はグローバル変数が悪いと知っていますが、pplはまだそれを使用しています...)。

そして、当然、あなたはこれがFirefoxで動作しないなどalertまたはdocument

関連する問題