为什么 getElementById 对文档元素内的元素不起作用?

IT技术 javascript html dom
2021-03-19 09:44:08

如果你getElementById习惯于像这样的文档 -document.getElementById那么它总是有效的。

但是,如果我们在元素上执行相同的操作,比如xlike x.getElementById,那么它会返回一个错误。

关于这一点的不寻常之处在于getElementsByClassNamegetElementsByTagName在元素上工作getElementById却没有!

1个回答

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

值得注意的是,您尝试获取的元素并不总是在 DOM 中,因此不能使用document.getElementById. 这种情况的一个用例是 AJAX 将 HTML 加载到一个变量中#createElement,尝试从那里尝试提取具有特定 ID 的元素。
2021-05-02 09:44:08
好吧,在我的情况下,我只想选择元素(通过 ID),如果它在另一个元素内,我最终切换到el.querySelector('#' + id)而不是el.getElementById(id)
2021-05-02 09:44:08
@basiphobe 该选择器可以简化为#bar.
2021-05-08 09:44:08
@cantera 你不应该在一个页面上有多个具有相同 ID 的元素。这不是 ID 的用途。ID 应该是唯一的。
2021-05-12 09:44:08
@mash 没有人说他在复制 ID。你可以有类似的东西<div id="article1"><div id="article1Image"></div></div>如果您已经有article1一个 JavaScript 变量,那么使用它article1.getElementById("article1Image")而不是重新搜索整个文档会很有用
2021-05-20 09:44:08