平时对dom进行操作时,通过id获取元素时,一般是这样document.getElementById(‘xx’);但是我们从来没有使用oDiv.getElementById(‘xx’)
原因如下:
- 没有必要
没有必要很好理解,id是唯一的,整个文档只有一个id,如果一个元素下面可以获取某个id,那是不是另一个元素下面也可以获取某个相同的id?所以id是整个文档的唯一,由document来获取合情合理。 - 会报错
这是一个值得注意的地方,大家只要在js代码块中尝试就知道会报错,这是没有疑问的,但是在这里我想给大家讲讲为什么报错。
以下是控制台的报错信息:

根据这个报错信息可以得出是因为oDiv上(原型链上)并没有getElementById这个函数方法,所以会报错。好,进入正题,下面来看一张图(DOM模型图)

先下个结论(事实):getElementById(‘xx’)的方法来自于Document.prototype,document是HTMLDocument实例出来的对象,继承Document原型上的方法,所以自然也可以使用getElementById(‘xx’)。
当获取某个元素时,其实例是由Element下面某个具体的类构造出来的,在这里并没有getElementById(‘xx’)所以元素不能使用该方法;
那就有人问了,那为什么元素可以使用getElementsByClass() / getElementsByTagName() / querySelector() / querySelectorAll() 等其他的方法呢
● 因为上述方法Document.prototype和Element.prototype上都有,所以元素和document都可以使用。
DOM元素ID获取解析
本文解释了为何在JavaScript中仅能通过document.getElementById而非元素实例来获取ID,涉及到DOM模型及原型链的概念,并对比了其他元素获取方法。
9347

被折叠的 条评论
为什么被折叠?



