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 允许我直接从 id 访问元素而不使用“getElementById”?这样做是不好的做法吗?会影响性能吗?

谢谢

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="none"; //这将导致错误,因为myelement现在是一个变量

}

于 2012-05-04T11:23:04.020 回答