js直接通过id操作DOM对象是不规范的

这个功能来源于 IE,后来firefox 和 chrome 也支持了。现在是 w3c 非正式的标准,不建议使用。
这个可以是id,input的name等,有一定的限制,浏览器兼容问题。
是不规范操作。

首先要知道什么是Browser对象
BOM
:Browser Object Model,即浏览器对象模型,提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。
Browser对象:指BOM提供的多个对象,包括:Window、Navigator、Screen、History、Location等。
其中Window对象为顶层对象,其他对象都为Window对象的子对象。

如果在HTML文档中用id属性为元素命名,并且如果Window对象没有此名字的属性,Window对象会赋予一个属性,它的名字是id属性的值,而他们的值指向表示文档元素的HTMLElement对象。在客户端JavaScript中,Window对象是以全局对象的形式存在于作用域链的最上层,这就意味着在HTML文档中使用的id属性会成为可以被脚本访问的全局变量。如果文档包含一个<div id="okay"></div>元素,可以通过全局变量okay来引用此元素。但是,有一个重要警告:如果Window对象已经具有此名字的属性,这就不会发生。比如,id是“history”、“location”、或“navigator”的元素,就不会以全局的形式出现,因为这些ID已经占用了。同样,如果HTML文档包含一个id为“x”的元素,并且还在代码中声明并赋值给全局变量x,那么显式声明的变量会隐藏隐式的元素变量。如果脚本中的变量声明出现在命名元素之前,那这个变量的存在就会阻止元素获取它的window属性。而如果脚本中的变量声明出现在命名元素之后,那么变量的显式赋值会覆盖该属性的隐式值。
可以参考JavaScript权威指南14.7章【作为Window对象属性的文档元素】

http://www.runoob.com/jsref/obj-window.html

 

转载于:https://my.oschina.net/af666/blog/1821310

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值