javascript - 在 getElementById 之后,getElementByClass 不链接到 DOM

标签 javascript html dom getelementbyid getelementsbyclassname

<分区>

我对我不理解的 JavaScript 中的奇怪行为有疑问:

如果我像这样获取元素(例如表格中的一行):

var someElement = document.getElementById("row1");

然后尝试从该元素(例如列)中按类查找元素并更改 innerHTML,没有任何反应:

someElement.getElementsByClassName("column1").innerHTML = "new text";

但如果我改为这样做:

someElement.childNodes[0].innerHTML= "new text";

元素 innerHTML 发生变化并且在 DOM 上可见。为什么会这样?我认为类的东西现在会为我生成更清晰的代码,那么有没有办法让类方法像我认为的那样工作?

我使用的是最新版本的 Chrome。

最佳答案

没有getElementByClassName()应该是getElementsByClassName()(注意elements末尾的s >.

但主要问题是当您尝试在 getElementsByClassName() 的结果上调用对象 innerHTML 的属性时,它返回所有元素的类数组对象具有所有给定类名的子元素。

无论如何,我建议使用 querySelector()querySelectorAll() 而不是:

someElement.querySelector(".column1").innerHTML = "new text";
//Or
someElement.querySelectorAll(".column1")[0].innerHTML = "new text";

否则你可以只指向返回结果的第一个元素,如:

someElement.getElementsByClassName("column1")[0].innerHTML = "new text";

关于javascript - 在 getElementById 之后,getElementByClass 不链接到 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51535265/

相关文章:

javascript - 使用 grunt-file-append 将文本附加到多个文件

html - Angular/Breeze - 无法在 HTML 文本输入中输入小数点

php - 为什么html页面读不到php页面

xml - MSXML VBA : Validating XML against XSD: "The ' ' namespace provided differs from the schema's targetNamespace.“

javascript - 在 Javascript 中可靠地将标签添加到 <head>

java - XML解析错误: UTF-8

javascript - 我无法在 laravel 5.2 中使用 ajax 将数据插入数据库

javascript - 选择 div 的特定区域

javascript - 如何在每次重绘之间不闪烁的情况下重绘 Canvas (每 250 毫秒)?

php - 为什么我的 ajax 不执行我的 sql 查询?