HTML标准API之异端邪说:id
和name
可以不用getElementBy
和querySelector(all)
即可直接当做全局变量使用。
现象
偶然一次浏览到别人的项目,发现https://github.com/zjcqoo/zjcqoo.github.io他的html代码写法好奇怪,直接把html里面标签的id当做变量来使用。
|
上述代码btnGo
、txtURL
、myImage
变量均未初始化即直接使用。
现执行如上代码,结果如下图:
解释
经过一番google搜索,找到了答案[1]
在HTML Living Standard 7.3.3里面是这样解释的:
这是一个非标准API(non-normative),供开发人员使用,生产环境下可能因为不同浏览器内核的实现而或内核的更新而存在差异。应该使用document.getElementById()
或document.querySelector()
。
规则
支持以下规则的,可以被直接调用:
- 所有带有
name
属性的embed
,form
,frameset
,img
,和object
标签 - 具有非空内容属性的
id
所有HTML元素 - 如果你的id名也叫document,那么很遗憾,
document
还是原来那个document
对象
参考资料
javascript variable corresponds to DOM element with the same ID https://stackoverflow.com/questions/5515659/javascript-variable-corresponds-to-dom-element-with-the-same-id ↩︎