Javascript-Can';得不到';getElementsByClassName';工作

Javascript-Can';得不到';getElementsByClassName';工作,javascript,jquery,html,web,Javascript,Jquery,Html,Web,我正在努力弄明白为什么我的代码不起作用。以下是JS的一部分: function init() { var showMenu = document.getElementsByClassName('showMenu'), perspectiveWrapper = document.getElementById( 'perspective' ), container = perspectiveWrapper.querySelector( '.container'

我正在努力弄明白为什么我的代码不起作用。以下是JS的一部分:

function init() {
    var showMenu = document.getElementsByClassName('showMenu'),
        perspectiveWrapper = document.getElementById( 'perspective' ),
        container = perspectiveWrapper.querySelector( '.container' ),
        contentWrapper = container.querySelector( '.wrapper' );

    showMenu.addEventListener( clickevent, function( ev ) {
        ev.stopPropagation();
        ev.preventDefault();
        docscroll = scrollY();
        // change top of contentWrapper
        contentWrapper.style.top = docscroll * -1 + 'px';
        // mac chrome issue:
        document.body.scrollTop = document.documentElement.scrollTop = 0;
        // add modalview class
        classie.add( perspectiveWrapper, 'modalview' );
        // animate..
        setTimeout( function() { classie.add( perspectiveWrapper, 'animate' ); }, 25 );
    });
}
以下是HTML的一部分:

<div id="topBar">
    <h1>Company</h1>
    <a href="#" class="entypo-menu showMenu"></a>
</div>

<div class="line"></div>

<div id="fixedBar">
    <h1>Company</h1>
    <a href="#" class="entypo-menu showMenu"></a>
</div>
我不明白这一点,因为如果我改变这一行:

var showMenu = document.getElementsByClassName('showMenu'),
致:

它确实有用

为什么类选择器不工作,而id选择器工作?我试图通过类
showMenu
获取两个链接来执行JS。

返回一个类似数组的列表(确切地说是一个数组),其中包含与类名匹配的所有元素。您可能关心第一个元素,因此请尝试使用以下元素:

var showMenu = document.getElementsByClassName( 'showMenu' )[0],
如果您关心所有元素,则需要在元素之间循环:

var showMenu = document.getElementsByClassName( 'showMenu' ),

// ...

for ( var i = 0; i < showMenu.length; ++i ) {
    showMenu[i].addEventListener( clickevt, function( ev ) {
        // Your code here
    });
}
var showMenu=document.getElementsByClassName('showMenu'),
// ...
对于(变量i=0;i
这是因为
document.getElementsByClassName()
返回一个类似于数组的数组

因此,如果您有多个要作为目标的元素,则必须使用for循环遍历它们,或者如果您仅使用此类查找第n个元素,则可以使用括号表示法指定其索引:

var showMenu = document.getElementsByClassName('showMenu')[0],
因为

您需要访问每个元素并分别附加事件侦听器:

for (var i = 0; i < showmenu.length; i++ ) {
    showMenu[i].addEventListener( clickevent, function( ev ) {
        // ...
    });
}
var showMenu = document.getElementsByClassName('showMenu')[0],
for (var i = 0; i < showmenu.length; i++ ) {
    showMenu[i].addEventListener( clickevent, function( ev ) {
        // ...
    });
}
Array.prototype.forEach.call(showMenu, function(el, i) {
    el.addEventListener( clickevent, function( ev ) {
        // ...
    });
});