getElementsByTagName 似乎不起作用

Posted

技术标签:

【中文标题】getElementsByTagName 似乎不起作用【英文标题】:getElementsByTagName does not seem to work 【发布时间】:2016-11-29 07:46:08 【问题描述】:

有人可以解释为什么我的代码不起作用!

当我通过 Id 获取元素时,它工作得非常好。但是与 getElementsByTagName() 相同的方法却没有。

另外,如果我使用 querySelector(),它可以工作。但是,如果我使用 querySelectorAll(),则会返回相同的错误。

test.html:15 Uncaught TypeError: Cannot set property 'color' of undefined

这是我的代码:

<DOCTYPE! html>
<html>
<head>

</head>

<body>
<h1>Hello World</h1>
<p id="par">Hello World</p>

<script>
var par = document.getElementById('par');
par.style.color = "red"
var heading = document.getElementsByTagName("h1");
heading.style.color = "red"
</script>


</body>
</html>

【问题讨论】:

heading[0].style.color = "red" 您阅读文档了吗?一些例程返回单个项目,其他例程返回一个列表。另外,请更正问题标题中的错字。 如果函数名不够清楚:getElementSSSSByTagNamegetElementById 没有's' ***.com/questions/12135403/… 应该有更好的骗子,但我只能找到这些 让我们看看,我确定您打开了控制台,并看到了错误,即“无法读取未定义的属性 'color'”。这显然意味着 heading.style 未定义。要了解原因,请使用您熟悉的开发工具控制台检查变量heading。你会看到它是一个array,它显然没有style 属性——它的elements(比如heading[0])有。这是基本的调试,如果您希望创建一个有意义的应用程序,而不是每次遇到小问题时都询问 SO 问题,那么您将需要学习它。 【参考方案1】:

您可以清楚地看到document,getElementsByTagName 返回一个元素数组,而不是单个元素。

所以你必须遵循正确的索引,否则它会像你的情况一样抛出异常。

【讨论】:

您是否在控制台中输入了该结果? &gt; 开头的行是他输入的。 是的...这是 chromes 控制台 @torazaburo....先生,在这个结构中,这些元素实际上是对象...所以无论您将其称为元素还是对象都没关系..

以上是关于getElementsByTagName 似乎不起作用的主要内容,如果未能解决你的问题,请参考以下文章

"push" 不是函数 [在 getElementsByTagName 返回的元素上]

JavaScript表单序列化不起作用

动态加载 css 样式表在 IE 上不起作用

为啥函数 lsqcurvefit 在 Matlab 2015b 中似乎不起作用?

C# SocketIOClientDotNet 似乎不起作用

我是不是正确使用核心位置?它似乎不起作用