1

我一直在阅读有关 getElmentByClassName 的信息,但我似乎无法让它在任何浏览器中工作,当我调用 ID 名称时,我拥有的功能可以工作,但我希望能够调用类名。

有什么方法不包括 Jquery 吗?

这就是我所拥有的,在一些帮助下会很棒。谢谢。

<ul><li><button class="testButton">Test button</button></li></ul>

function OnButtonDown (button) {
alert("The class work")
}

function Init () {
    var className = "testButton";
    var button = document.getElementsByClassName(className);
    if (button.addEventListener) {  // all browsers except IE before version 9
        button.addEventListener ("mousedown", function () {
            OnButtonDown (button)
            }, false);
        button.addEventListener ("mouseup", function () {
            OnButtonUp (button)
            }, false);
    }
    else {
        if (button.attachEvent) {   // IE before version 9
            button.attachEvent ("onmousedown", function () {
                OnButtonDown (button)
                });
            button.attachEvent ("onmouseup", function () {
                OnButtonUp (button)
                });
        }
    }
}
4

2 回答 2

3

getElementsByClassName()返回 HTML 元素的集合,您需要使用它们的索引访问集合的元素:

button = document.getElementsByClassName(className)[0];
// your code here

如果您只有一个元素,请考虑使用.getElementById().

于 2013-02-02T11:12:41.530 回答
1

@micnic 说了什么。

供参考。如果对您document.getElementById() 不起作用,请按照以下方式处理:

var button = false;
var buttons = document.getElementsByClassName(className);
for (var i=0; i<buttons.length; i++) {
    button = buttons[i];
    // do stuff with button
}

在这里演示:http: //jsfiddle.net/3pAeM/

于 2013-02-02T11:29:58.663 回答