难以将html元素从节点列表传递到匿名函数

时间:2017-01-16 18:42:25

标签: javascript html dom

我正在尝试从节点列表向每个html元素添加一个eventListener,并将相同的html元素作为参数传递给回调函数。我的代码看起来像这样。

let programs = document.getElementsByClassName('program-name')
for (i = 0; i < programs.length; i++){
    programs[i].addEventListener("click", () => testFunc(programs[i]))
}
function testFunc(program) {
    console.log(program)
}

问题是我希望console.log(program)将html元素记录到控制台,但所有日志都是undefined

1 个答案:

答案 0 :(得分:1)

您可以使用传递给处理程序的event对象,而不是使用闭包(如注释中所示):

programs[i].addEventListener("click", (evt) => testFunc(evt.currentTarget))

然后,单击的HTML元素将传递给回调。