有人能告诉我调用id =“myDomObect”的HTML元素之间的区别吗?:
var myObj = document.getElementById('myDomObect');
&安培;
var myObj = myDomObect;
答案 0 :(得分:7)
使用第一个表单或包装器(如jQuery)。第二种形式,
var myObj = myDomObect;
转换为
var myObj = window["myDomObect"];
这是“有效的”,因为旧的,旧的黑客,其中ID被暴露为全局窗口属性(IIRC从一开始就是错误的),因此我们仍然幸运的行为20多年以后......是的,它将在最新的Chrome中运行。
但是,出于多种原因 这样的简写应该
。它不会像最初用“严格模式”那样工作(但它适用于第二种形式)
它不传达操作 - 即请求/获取DOM元素(通过ID)。
对于与窗口属性冲突的ID不起作用;例如。如果以这种方式访问,<div id=history></div>
将导致“意外行为”。 (这不会影响在函数中正确使用本地var
变量的getElementById代码。)
当文档中存在重复的ID( 允许)时,未定义行为; DOM 4编写了getElementById的行为:"getElementById(elementId) method must return the first element [with the ID], in tree order.."
另见:
答案 1 :(得分:0)
首先是&#34;真实&#34; DOM API有效(另一个选项是document.querySelector("#myDomObject")
)。第二个是浏览器如何开始实现id
&n; d元素的自动提升,因为ID应该是唯一的。在&#34;你在想什么&#34;,这可能导致热闹的冲突,其中与具有id don&#t; 的HTML元素具有相同名称的变量优先于你使用的变量突然是一个HTML元素。