“document.getElementByClass不是函数”

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (220)

我试图运行一个函数点击任何按钮class="stopMusic"...。我在Firebug中发现了一个错误

getElementByClass不是函数

这是我的代码:

var stopMusicExt = document.getElementByClass("stopButton");
    stopButton.onclick = function() {
        var ta = document.getElementByClass("stopButton");
        document['player'].stopMusicExt(ta.value);
        ta.value = "";
    };
提问于
用户回答回答于

你可能是说document.getElementsByClassName()(然后从结果节点列表中获取第一项):

var stopMusicExt = document.getElementsByClassName("stopButton")[0];

stopButton.onclick = function() {
    var ta = document.getElementsByClassName("stopButton")[0];
    document['player'].stopMusicExt(ta.value);
    ta.value = "";
};

你可能仍然会发现错误

document.getElementsByClassName不是一个函数

但是,在旧浏览器中,如果需要支持这些旧浏览器,则可以提供备用实现。

用户回答回答于

如果你想一次选择多个节点,可以使用许多不同的方法。可以这样做:

var list = document.getElementsByClassName("myButton");
for (var i = 0; i < list.length; i++) {
    // list[i] is a node with the desired class name
}

它将返回具有该类名的节点列表。

在Sizzle,情况如下:

var list = Sizzle(".myButton");
for (var i = 0; i < list.length; i++) {
    // list[i] is a node with the desired class name
}

在jQuery中,如下所示:

$(".myButton").each(function(index, element) {
    // element is a node with the desired class name
});

在Sizzle和jQuery中,可以像这样将多个类名放入选择器中,并使用更加复杂和强大的选择器:

$(".myButton, .myInput, .homepage.gallery, #submitButton").each(function(index, element) {
    // element is a node that matches the selector
});

扫码关注云+社区