javascript - 将 html 元素从节点列表传递到匿名函数时遇到困难

标签 javascript html dom

我试图将事件监听器添加到节点列表中的每个 html 元素,并将相同的 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

最佳答案

您可以使用传递给处理程序的 event 对象,而不是使用闭包(如评论中建议的那样):

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

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

关于javascript - 将 html 元素从节点列表传递到匿名函数时遇到困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41683055/

相关文章:

javascript - 如何在javascript中告诉包含对象?

javascript - 如何使用 SASS 动态切换颜色主题?

javascript - 使用 jquery 将所有图像包装在 html 字符串中

html - AngularJS 菜单布局桌面和移动响应

javascript - 如何在不使用正则表达式的情况下检查输入是否为表情符号?

javascript - node.nextSibling 和 ChildNode.nextElementSibling 之间有什么区别?

javascript - Dojo.Connect 事件未被调用 - 为什么?

javascript - javascript 单击后获取数组的下一个元素并将其显示在搜索表单中

javascript - 想要知道图像的原始大小并通过 jQuery 中的属性进行分配

javascript - 检测 Google Chrome 中所有打开的页面,而不仅仅是当前窗口中的页面