Javascript addEventListener单击在单击之前执行

Javascript addEventListener单击在单击之前执行,javascript,javascript-events,addeventlistener,Javascript,Javascript Events,Addeventlistener,我想在单击函数中传递参数 var albums = document.getElementsByClassName("album"); for(var i = 0; i<albums.length; i++){ document.getElementById(albums[i].id).addEventListener("click", goAlbum(albums[i].id), false); } function toArray(list) { return Arr

我想在单击函数中传递参数

var albums = document.getElementsByClassName("album");
for(var i = 0; i<albums.length; i++){
    document.getElementById(albums[i].id).addEventListener("click", goAlbum(albums[i].id), false);
}
function toArray(list) {
    return Array.prototype.slice.call(list);
}

var albums = toArray(document.getElementsByClassName("album"));
albums.forEach(function (album) {
    document.getElementById(album.id).addEventListener("click", function () {
        goAlbum(album.id);
    }, false);
});
var albums=document.getElementsByClassName(“album”);

for(var i=0;i
goAlbum
之所以被执行,是因为您调用了该函数。您不是在“创建”一个函数。您想要做的是为
addEventListener
提供逻辑,以便在单击某个内容时执行;该逻辑是“调用
goAlbum
”。为此,请将函数调用包装在匿名函数中

var albums = document.getElementsByClassName("album");
for(var i = 0; i<albums.length; i++){
    document.getElementById(albums[i].id).addEventListener("click", goAlbum(albums[i].id), false);
}
function toArray(list) {
    return Array.prototype.slice.call(list);
}

var albums = toArray(document.getElementsByClassName("album"));
albums.forEach(function (album) {
    document.getElementById(album.id).addEventListener("click", function () {
        goAlbum(album.id);
    }, false);
});
此外,因为我已经重构了您的代码以使用
forEach
。我需要将
文档.getElementsByClassName
返回的
节点列表
转换为
数组
,以便使用
forEach
,从而实现
toArray
函数

var albums = document.getElementsByClassName("album");
for(var i = 0; i<albums.length; i++){
    document.getElementById(albums[i].id).addEventListener("click", goAlbum(albums[i].id), false);
}
function toArray(list) {
    return Array.prototype.slice.call(list);
}

var albums = toArray(document.getElementsByClassName("album"));
albums.forEach(function (album) {
    document.getElementById(album.id).addEventListener("click", function () {
        goAlbum(album.id);
    }, false);
});