当我可以直接引用 JavaScript 中的 DOM id 时,为什么要使用 document.getElementBy
Why use document.getElementById when I can directly refer to the DOM id in JavaScript?
可能的重复项:
IE/Chrome:DOM树元素在这里是全局变量吗?
我最近发现我可以在javascript中使用DOM中的任何对象,并直接引用其id:
<div id="layer">IM A LAYER</div>
<script>
alert(layer.innerHTML);
</script>
如果这是真的,那么使用 getElementById 方法会有什么好处?
如果元素不存在,直接访问 DOM 元素会给你一个错误。如果你使用getElementById
它会返回NULL
。
例如,如果元素的名称中包含破折号(some-id
),则也无法直接访问所有元素,因为JS变量不能包含破折号。但是,您可以使用window['some-id']
访问它们。
例如
,如果您的页面中有另一个以前的脚本
<script>
var layer = false; // or any other assignment
</script>
layer
将是window.layer
的引用,那么layer.innerHTML
将失败。有了document.getElementById
您将避免这个棘手的错误
这
仅适用于包含变量名允许的字母的id
。对于像 text-11
这样的 id item-key-21
它不起作用。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 为什么“;未定义的“;在JavaScript中结束循环
- 为什么这在IE中的工作方式与在Firefox中不同
- 知道为什么我的旋转木马不会自动更改图片吗
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- 为什么在变形之前不缺少Fx
- 为什么JavaScript在for循环为3时向所有4发出警报
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- 为什么Airbnb风格指南说不鼓励依赖函数名称推断
- 为什么要使用0>javascript中的0
- 为什么无法在TypeScript中导出类实例
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 为什么我的d3.jsselectAll+过滤器没有过滤
- 为什么HTML5拖放的目标是孩子?(可排序列表)
- 为什么忽略了eval()代码中的语法错误
- 为什么在画布上画线;t出现
- 为什么js事件消失了
- 为什么元素的宽度在页面加载之后和那一刻之后不同
- 为什么不'在JQuery中找到第二个css选择器的工作