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"
您阅读文档了吗?一些例程返回单个项目,其他例程返回一个列表。另外,请更正问题标题中的错字。
如果函数名不够清楚:getElementSSSSByTagName
而getElementById
没有's'
***.com/questions/12135403/… 应该有更好的骗子,但我只能找到这些
让我们看看,我确定您打开了控制台,并看到了错误,即“无法读取未定义的属性 'color'”。这显然意味着 heading.style
未定义。要了解原因,请使用您熟悉的开发工具控制台检查变量heading
。你会看到它是一个array,它显然没有style
属性——它的elements(比如heading[0]
)有。这是基本的调试,如果您希望创建一个有意义的应用程序,而不是每次遇到小问题时都询问 SO 问题,那么您将需要学习它。
【参考方案1】:
您可以清楚地看到document,getElementsByTagName
返回一个元素数组,而不是单个元素。
所以你必须遵循正确的索引,否则它会像你的情况一样抛出异常。
【讨论】:
您是否在控制台中输入了该结果?>
开头的行是他输入的。
是的...这是 chromes 控制台
@torazaburo....先生,在这个结构中,这些元素实际上是对象...所以无论您将其称为元素还是对象都没关系..以上是关于getElementsByTagName 似乎不起作用的主要内容,如果未能解决你的问题,请参考以下文章
"push" 不是函数 [在 getElementsByTagName 返回的元素上]
为啥函数 lsqcurvefit 在 Matlab 2015b 中似乎不起作用?