
js通过id获取元素的子级元素的奇怪现象
昨天遇到一个从来没见过的问题,今天就试了一遍,代码如图1,一看结果就报错了。于是我把list.getElementById改成document.getElementByI...
昨天遇到一个从来没见过的问题,今天就试了一遍,代码如图1,一看结果就报错了。于是我把list.getElementById改成document.getElementById,之后就有结果了,没报错。好,接下来我又试了其他的办法,getElementsByTagName、getElementsByClassName、querySelector都试过了,都有结果,唯独getElementById不行。总的来说,就是我通过前者得到的变量来获取它的子级时,用getElementById就出问题了,但是如果我把它换成document来点那就没问题。我想知道这是为什么?(这里说明下,list的输出没问题,有结果)
展开
2个回答
展开全部
这是因为ID是具有全局唯一性的,也就是说同一个页面是不允许出现相同ID的元素的(当然你在html中可以设定相同的id,但js只能定位到第一个),所以要想通过id来获取页面元素,只需要全局定位(即document.getElementById)即可,不需要在子元素中再来进一步定位。事实上,正是因为上述原因,getElementById是document对象的特有方法,其他对象是没有这个方法的,这就是为什么list.getElementById会提示说不是函数的原因!
更多追问追答
追问
这两个id名是不同的。不过根据你的回答,我去console.dir看了下,确实没有这个方法。谢谢你啦!
追答
我没说你两个id是相同的啊,我是说两个id都是从document中直接提取即可,而不能够从一个id内再去提取另一个id
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询