有人能告诉我用 id="myDomObect"调用 HTML 元素的区别吗?:
var myObj = document.getElementById('myDomObect');
&
var myObj = myDomObect;
最佳答案
使用第一种形式或包装器,例如 jQuery。第二种形式,
var myObj = myDomObect;
转换为
var myObj = window["myDomObect"];
这个“有效”是因为一个旧的,旧的 hack,其中 ID 作为全局窗口属性公开(IIRC 从一开始就是一个错误),因此我们仍然对行为 20 感到幸运多年后......是的,它将在最新的 Chrome 中运行。
但是,出于多种原因,不应使用这样的简写形式:
它不会像最初在“严格模式”中写的那样工作(但它会在第二种形式下工作)
它不传达操作 - 即请求/获取 DOM 元素(通过 ID)。
它不适用于与窗口属性冲突的 ID;例如。
<div id=history></div>
如果以这种方式访问,将导致“意外行为”。 (这不会影响在函数中正确使用本地var
变量的 getElementById 代码。)当文档中存在重复 ID 时,行为未定义( 允许); getElementById 的行为已由 DOM 4 编码:"getElementById(elementId) method must return the first element [with the ID], in tree order.."
另见:
关于javascript - getElementById 和简单地使用元素的 ID 作为变量有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26331906/