Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么';是getElementById和getElementsByClassName之间的区别_Javascript - Fatal编程技术网

Javascript 什么';是getElementById和getElementsByClassName之间的区别

Javascript 什么';是getElementById和getElementsByClassName之间的区别,javascript,Javascript,我知道使用getElementsByClassName可能不是正确的方法。例如,下面的代码不能按原样工作?为什么?但是当更改getElementsByClassName(“demo”)ForgetElementById(“demo2”)时可以工作 <!DOCTYPE html> <html> <body> <p>Click the button.</p> <button onclick="myFunction()">Try

我知道使用
getElementsByClassName
可能不是正确的方法。例如,下面的代码不能按原样工作?为什么?但是当更改
getElementsByClassName(“demo”)
For
getElementById(“demo2”)
时可以工作

<!DOCTYPE html>
<html>
<body>

<p>Click the button.</p>
<button onclick="myFunction()">Try it</button>
<p class="demo" id="demo2">anything</p>

<script>
function myFunction() {
var str = "How are you doing today?";
var res = str.split(" ");
document.getElementsByNameClass("demo").innerHTML = res;
}
</script>

</body>
</html>

点击按钮

试试看

任何东西

函数myFunction(){ var str=“你今天过得怎么样?”; var res=str.split(“”); document.getElementsByNameClass(“demo”).innerHTML=res; }
返回一个集合(一个类似于数组的对象),因为可能有多个元素具有该类名集合没有
innerHTML
属性。
必须使用循环:

var elements = document.getElementsByClassName("demo");
for (var i = 0; i < elements.length; i++) {
   elements[i].innerHTML = res;
}
var elements=document.getElementsByClassName(“演示”);
对于(var i=0;i
相反,
getElementById
返回单个元素,它可以这样做,因为ID是唯一的

(我假设您的示例中的
getElementsByNameClass
是一个打字错误。)

getElementById()
用于使用其
id
访问DOM元素,
getElementsByClassName()
用于使用其
类访问元素

您的代码无法工作,因为
getElementsByClassName()
返回具有给定类的所有元素的类似数组的对象。您需要访问场景中数组的第一个元素


点击按钮

试试看

任何东西

函数myFunction(){ var str=“你今天过得怎么样?”; var res=str.split(“”); document.getElementsByClassName(“demo”)[0].innerHTML=res; }
因为
getElementsByNameClass
(它实际上应该是
getElementsByClassName
)返回一个集合,而
getElementById
返回一个元素。集合没有
innerHTML
属性,设置它没有任何效果。我很惊讶
getElementsByNameClass
做了任何事情。OP在75%的问题尝试中拼写正确。一次拼写错误肯定是打字错误。@Vohuman:请在答案部分写下你的答案。你可以在下面找到它。@LightnessRacesinOrbit讽刺?因此,许多问题要么是重复问题,要么是超简单问题。这就是我通常不发布答案的原因。但你是对的,评论可能会掩盖答案。我会考虑这个。它不是一个数组。用修正来更新。在我看来,如果OP只想处理类的第一个实例(为什么是第一个?为什么不是第二个?第三个?),他们应该使用一个ID。但是特定代码段的解决方案要求它是列表的第一个成员(类似数组的对象)。代码段是一个“示例”。在解决一般问题时,将未提及的细节作为要求是不明智的。为什么不使用循环呢?这样做的另一个好处是,当找不到匹配的元素时,不会导致严重的错误消息和中断脚本。