为什么getElementById不能处理文档元素中的元素?

aka*_*eva 33 html javascript dom

如果您习惯使用getElementById文档 - document.getElementById那么它总是有效.

但是,但是,如果我们执行的元素在同一个说x喜欢x.getElementById,那么它将返回一个错误.

关于这个不寻常的是,getElementsByClassNamegetElementsByTagName上的元素但工作getElementById不!

mas*_*ash 51

容器ID应该是唯一的,因此没有理由在另一个容器中按ID查找对象.这就是您只需要document.getElementById通过其ID访问任何元素的原因,而当您按类或标记名称进行搜索时,您可能只想在特定容器中进行搜索,这就是您可以执行此操作的原因x.getElementsByClassName.

  • @mash没有人说他在复制ID.你可以有类似`<div id ="article1"> <div id ="article1Image"> </ div> </ div>`的东西.如果你已经在JavaScript变量中有`article1`,那么使用`article1.getElementById("article1Image")`而不是重新搜索整个文档会很有用. (15认同)
  • 值得注意的是,您尝试获取的元素并不总是在DOM中,因此不能使用`document.getElementById`.一个用例是AJAX将HTML加载到由`#createElement`实例化的变量中,并从那里尝试提取具有特定ID的元素. (3认同)
  • 好吧,在我的情况下,我只想选择元素(通过 ID)_if_它在另一个元素内,我最终切换到`el.querySelector('#' + id)` 而不是 `el.getElementById(id)` (3认同)