首页 > 解决方案 > 如何通过更改参数动态添加函数到 onclick 事件?

问题描述

我正在向一系列锚元素动态添加一个 onlick 事件。对于每个锚元素,我需要以变量的形式使用不同的参数值。在循环中使用以下事件侦听器时:

anchor.addEventListener("click", () => { task(title, author) });

title并且author对于每个锚元素的 onclick 最终都是相同的(它们都是最后一次迭代的值titleauthor)。我希望它们代表循环中特定迭代的变量值。这是一个最小的工作代码示例:

for (obj of objTasks) {
    title = obj.title;
    author = obj.author;

    var anchor = document.createElement("a");

    anchor.addEventListener("click", () => { task(title, author) });
}

标签: javascripteventsparameters

解决方案


您正在全局声明变量 - 使用let,因为它是块作用域(var是函数作用域):

for (let obj of objTasks) {
    let title = obj.title;
    let author = obj.author;
    let anchor = document.createElement("a");
    anchor.addEventListener("click", () => { task(title, author) });
}

推荐阅读