0

Chromeで遊んでいると、これらの機能が両方とも同じように機能することに気づきました。

<img src="picture.jpg" id="myelement" />

function stuff(){
var x=document.getElementById("myelement");
x.style.display="none";
}//works almost everywhere

function stuff(){
myelement.style.display="none";
}//only works in Chrome

Chromeで「getElementById」を使用せずにIDから直接要素にアクセスできるのはなぜですか?そして、このようにするのは悪い習慣ですか?パフォーマンスに悪影響はありますか?

ありがとう

4

2 に答える 2

4

Chromeは、IDを持つ各要素に対応するグローバル変数を自動的に作成します。javascriptで静的な変数はないため、本番コードでこれらの変数を使用することは非常に悪い考えです。後で誰かが何かを割り当てた可能性がmyelementあり、あなたはそれを知る方法がありません。

この機能を使用する場合(おそらくコンソールなどのテスト環境で)、対応するノードgetElementById()に割り当てるコードが最初に実行されるため、より高速であると思います。myelement

于 2012-05-04T11:04:06.063 に答える
0

いいえ、パフォーマンスが低下することはありません。Firefox も同様です。変数名の競合状態が発生した場合でも、ローカル変数が優先されます。

お気に入り

<img src="picture.jpg" id="myelement" />

関数 スタッフ()

{

var myelement="テスト変数";

myelement.style.display="なし"; // myelementは現在変数であるため、これはエラーになります

}

于 2012-05-04T11:23:04.020 に答える