js通过id获取元素的子级元素的奇怪现象

昨天遇到一个从来没见过的问题,今天就试了一遍,代码如图1,一看结果就报错了。于是我把list.getElementById改成document.getElementByI... 昨天遇到一个从来没见过的问题,今天就试了一遍,代码如图1,一看结果就报错了。于是我把list.getElementById改成document.getElementById,之后就有结果了,没报错。好,接下来我又试了其他的办法,getElementsByTagName、getElementsByClassName、querySelector都试过了,都有结果,唯独getElementById不行。总的来说,就是我通过前者得到的变量来获取它的子级时,用getElementById就出问题了,但是如果我把它换成document来点那就没问题。我想知道这是为什么?(这里说明下,list的输出没问题,有结果) 展开
 我来答
网海1书生
科技发烧友

2019-06-30 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12315 获赞数:26236

向TA提问 私信TA
展开全部
这是因为ID是具有全局唯一性的,也就是说同一个页面是不允许出现相同ID的元素的(当然你在html中可以设定相同的id,但js只能定位到第一个),所以要想通过id来获取页面元素,只需要全局定位(即document.getElementById)即可,不需要在子元素中再来进一步定位。事实上,正是因为上述原因,getElementById是document对象的特有方法,其他对象是没有这个方法的,这就是为什么list.getElementById会提示说不是函数的原因!
更多追问追答
追问
这两个id名是不同的。不过根据你的回答,我去console.dir看了下,确实没有这个方法。谢谢你啦!
追答
我没说你两个id是相同的啊,我是说两个id都是从document中直接提取即可,而不能够从一个id内再去提取另一个id
百度网友ca6ad38
2019-06-30 · TA获得超过158个赞
知道小有建树答主
回答量:237
采纳率:91%
帮助的人:97.5万
展开全部
......
document.getElementById 返回的是 element 对象
element 有 getElementById 这个函数吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式