我是javascript的新手,所以在做一些学习时我发现有一些id的元素就像
一样html部分
<canvas id="someid"><canvas>
js part
someid.someProperty = something; // works as well as getElementById('someid')
但在所有教程中,我发现它被告知要使用getElementById。 播下一种或另一种方式的好处?我应该选择哪种方式? 检查Firefox,Opera,DWB和geany内部浏览器(webkit)。
答案 0 :(得分:1)
某些浏览器为命名的DOM元素创建隐式全局变量。在Firefox中以这种方式引用元素会产生以下警告:
“ID / NAME在全局范围内引用的元素。使用W3C标准 document.getElementById()代替。“
遵循警告的建议。使用getElementById
:
没有充分的理由使用非标准方法。
答案 1 :(得分:1)
在所有情况下都使用document.getElementById("whatever")
。以下是一些相关问题:
使用自动全局变量存在以下问题:
使用document.getElementById()
:
答案 2 :(得分:0)
对于JS,您打算编写它总是很好的手动将变量绑定到DOM元素,否则如果某个Object绑定到window
对象并且与您的元素共享相同的ID名称,则可能会得到不希望的结果
var someid = {}; // Some Object
someid.style.color = "red"; // DOM element remains untouched
// we just nested properties and values to the 'someid' Object.
// #someid text has not become red.
var myElement = document.getElementById('someid');
// var myElement = querySelector('#someid');
myElement.style.color = "red";
// Wow, now it is