getElementByClassName不起作用

时间:2017-07-28 08:39:49

标签: javascript getelementsbyclassname

我有一个问题,为什么我不想累了一段时间。我刚开始学习js。非常感谢您的帮助

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <img class="test" src="https://storage.googleapis.com/gweb-uniblog-publish-prod/static/blog/images/google-200x200.7714256da16f.png">
        <img class="test" src="https://storage.googleapis.com/gweb-uniblog-publish-prod/static/blog/images/google-200x200.7714256da16f.png">

        <script>
            var test = document.getElementsByClassName("test");
            test.onclick = function () {
                alert("test");
            };
        </script>
    </body>
</html>

4 个答案:

答案 0 :(得分:1)

您需要将eventlistener添加到每个元素。所以你需要遍历元素,因为myImage.image = filter1(myImage: myImage.image) 返回一个元素数组。你可以这样做:

&#13;
&#13;
document.getElementsByClassName()
&#13;
function trigger() {
  alert("test");
}

var test = document.getElementsByClassName("test");

for (var i = 0, j = test.length; i < j; i++) {
  test[i].addEventListener("click", trigger);
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我不是javascript开发人员,但我认为应该是

var test = document.getElementsByClassName("test")[0];
test.onclick = function (){
    alert("test");
};

document.getElementsByClassName返回一个列表。

答案 2 :(得分:0)

document.getElementsByClassName("test"); 

返回一个数组。 您必须遍历该数组并将onclick应用于每个元素。

答案 3 :(得分:0)

如前面的答案所述,方法document.getElementsByClassName返回一个NodeList对象,它是一个数组索引(0,1 ...)的对象,你可以使用for .. in循环遍历它或Array.prototype.forEach.call方法,可以将事件监听器附加到每个节点。

var tests = document.getElementsByClassName("test");
var node;
for (node in tests) {
  node.addEventListener("click", function(e){
        // do something
   });
}

或者通过以下方式:

    var tests = document.getElementsByClassName("test");
    Array.prototype.forEach.call(tests, function(node){
      node.addEventListener("click", function(e){
            // do something
      });
   });

要点是你必须为每个元素添加事件监听器。