此问题在此处已有答案:
Setting innerHTML: Why won't it update the DOM?(5个答案)
What do querySelectorAll and getElementsBy* methods return?(12个答案)
昨天关门了。
为什么我不能更改innerHTML
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>document</title>
<style>
</style>
</head>
<body>
<div class="sa"></div>
<script>
var a = document.getElementsByClassName("sa").innerHTML;
a = "hi";
console.log(a);
</script>
</body>
</html>
输出:output
我甚至看不到代码片段:code snippets-1、code snippets-2
这段代码哪里错了?,我搜索了一下,但找不到我想要的结果,我甚至不确定我问的问题是否正确,每次我看到一个例子时都会发生这种情况,但当我这样做时,我害怕在开始时阻止自己。
我尝试将hi写入div并在控制台中检查hi,结果我看不到在页面上键入的内容,但在控制台中可以看到
3条答案
按热度按时间lyfkaqu11#
在你的例子中,你得到了innerHTML DATA,它不是对元素HTML的引用。
a
变量现在是一个文本字符串。因此,当你试图改变它时,你改变的是a的值,而不是元素的innerHTML。相反,请按如下方式获取元素引用,然后在该元素上设置innerHTML。
同样,当你得到多个元素(复数)时,你要么需要循环,要么得到第一个元素。通常在使用css选择器时,使用
document.querySelector('.sa')
更容易。第一个
7eumitmz2#
document.getElementsByClassName()
返回一个数组,其中包含与作为参数传入的类相匹配的项。https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName
mwyxok5s3#
document.getElementsByClassName()
返回元素的集合。如果要访问innerHTML
属性,如果这些元素,则必须使用.forEach()
循环,如下所示: