html 为什么我不能在div中键入,并且在键入getElementById [duplicate]时看不到代码段

rbl8hiat  于 2022-11-20  发布在  其他
关注(0)|答案(3)|浏览(81)

此问题在此处已有答案

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-1code snippets-2
这段代码哪里错了?,我搜索了一下,但找不到我想要的结果,我甚至不确定我问的问题是否正确,每次我看到一个例子时都会发生这种情况,但当我这样做时,我害怕在开始时阻止自己。
我尝试将hi写入div并在控制台中检查hi,结果我看不到在页面上键入的内容,但在控制台中可以看到

lyfkaqu1

lyfkaqu11#

在你的例子中,你得到了innerHTML DATA,它不是对元素HTML的引用。a变量现在是一个文本字符串。因此,当你试图改变它时,你改变的是a的值,而不是元素的innerHTML。
相反,请按如下方式获取元素引用,然后在该元素上设置innerHTML。
同样,当你得到多个元素(复数)时,你要么需要循环,要么得到第一个元素。通常在使用css选择器时,使用document.querySelector('.sa')更容易。
第一个

7eumitmz

7eumitmz2#

document.getElementsByClassName()返回一个数组,其中包含与作为参数传入的类相匹配的项。
https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName

mwyxok5s

mwyxok5s3#

document.getElementsByClassName()返回元素的集合。如果要访问innerHTML属性,如果这些元素,则必须使用.forEach()循环,如下所示:

document.getElementsByClassName().forEach(e=>e.innerHTML="new stuff");

相关问题