gpt4 book ai didi

javascript - addEventListener 点击在点击之前执行

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:04:34 25 4
gpt4 key购买 nike

我想在点击函数中传递参数。

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);
}

但是,goAlbum 函数在创建时被执行,然后该函数将不再执行。我做错了什么?

最佳答案

goAlbum 正在执行,因为您调用了该函数。您不是在“创建”功能。您打算做的是为 addEventListener 提供点击某些内容时执行的逻辑;该逻辑是“调用 goAlbum”。为此,将函数调用包装在匿名函数中。

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);
});

此外,因为 it is unwise to create functions in a for loop ,我已重构您的代码以使用 forEach。我需要将 document.getElementsByClassName 返回的 NodeList 转换为 Array 以便使用 forEach,因此toArray 函数。

关于javascript - addEventListener 点击在点击之前执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27245040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com