【问题标题】:getElementsByTagName does not seem to workgetElementsByTagName 似乎不起作用
【发布时间】: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'
  • stackoverflow.com/questions/12135403/… 应该有更好的骗子,但我只能找到这些
  • 让我们看看,我确定您打开了控制台,并看到了错误,即“无法读取未定义的属性 'color'”。这显然意味着 heading.style 未定义。要了解原因,请使用您熟悉的开发工具控制台检查变量heading。你会看到它是一个array,它显然没有style 属性——它的elements(比如heading[0])有。这是基本的调试,如果您希望创建一个有意义的应用程序,而不是每次遇到小问题时都询问 SO 问题,那么您将需要学习它。

标签: javascript dom getelementsbytagname selectors-api


【解决方案1】:

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

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

【讨论】:

  • 您是否在控制台中输入了该结果?
  • &gt; 开头的行是他输入的。
  • 是的...这是 chromes 控制台
  • @torazaburo....先生,在这个结构中,这些元素实际上是对象...所以无论您将其称为元素还是对象都没关系..
猜你喜欢
  • 1970-01-01
  • 2011-11-16
  • 1970-01-01
  • 2016-02-01
  • 2020-09-23
  • 2010-12-05
  • 2011-06-14
  • 2015-01-10
相关资源
最近更新 更多