为什么div元素没有getELementById方法?!

平时对dom进行操作时,通过id获取元素时,一般是这样document.getElementById(‘xx’);但是我们从来没有使用oDiv.getElementById(‘xx’)
原因如下:

  1. 没有必要
    没有必要很好理解,id是唯一的,整个文档只有一个id,如果一个元素下面可以获取某个id,那是不是另一个元素下面也可以获取某个相同的id?所以id是整个文档的唯一,由document来获取合情合理。
  2. 会报错
    这是一个值得注意的地方,大家只要在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都可以使用。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值