javascript - 如何通过更改参数动态添加函数到 onclick 事件?
问题描述
我正在向一系列锚元素动态添加一个 onlick 事件。对于每个锚元素,我需要以变量的形式使用不同的参数值。在循环中使用以下事件侦听器时:
anchor.addEventListener("click", () => { task(title, author) });
title
并且author
对于每个锚元素的 onclick 最终都是相同的(它们都是最后一次迭代的值title
和author
)。我希望它们代表循环中特定迭代的变量值。这是一个最小的工作代码示例:
for (obj of objTasks) {
title = obj.title;
author = obj.author;
var anchor = document.createElement("a");
anchor.addEventListener("click", () => { task(title, author) });
}
解决方案
您正在全局声明变量 - 使用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) });
}
推荐阅读
- sql - 将 XML 发票数据导入 SQL 表
- typescript - 用打字稿中的字段初始化函数?
- ios - UIView 蒙版三角形
- oracle - ORA-24247: 访问控制列表 (ACL) 拒绝网络访问?
- c# - 在 Visual Studio 中构建 Docker 映像有时需要很长时间
- javascript - React 表单不会呈现我放在构造函数上的状态值
- three.js - 不能将 stats.js 与 three.js 一起使用
- c# - 如何在文本中获取多个或单个值?
- excel - 图片可见 = true 如果单元格包含数据
- git - 在 Gitlab CICD 管道中创建自动版本标签