平时对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都可以使用。