javascript - 动态添加事件监听器。函数触发,但如何发送可变参数?

标签 javascript events

我正在用 JavaScript 构建一个表格,它包含一个带有链接的单元格,单击该链接时应该触发一个函数。该单元格被添加到一个循环中,其中 i 随着每个循环而递增,我希望将 i 作为参数嵌入到我的函数中。

使用下面的代码,当我在接收函数中 alert(i); 时,我没有得到正确的号码。一方面,无论迭代如何,添加的元素都具有数字 3(可能不是巧合,我正在 3 条记录的数据源上对此进行测试)。

代码

// Add supplier name to cell as a link
var a = document.createElement('a');
var linkText = document.createTextNode(data[i].supName);
a.appendChild(linkText);
a.title = "Click to create a purchase order.";
a.href = "#";
alert('inserting '+i); // diagnostic line
a.onclick = function(){postData ('main/createPO.php', '', 'makePO(resp,'+i+')', '', '')};
td1.appendChild(a);
tr.appendChild(td1);

上面是在 for 循环中,其中 i 递增。

诊断警报,触发:

inserting 0
inserting 1
inserting 2

...但是嵌入的 i 似乎总是 3!

这是重要的一行:

a.onclick = function(){postData ('main/createPO.php', '', 'makePO(resp,'+i+')', '', '')};

最佳答案

此人遇到了与您相同的问题,并且有一个很好的答案: JavaScript closure inside loops – simple practical example

关于javascript - 动态添加事件监听器。函数触发,但如何发送可变参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15776066/

相关文章:

javascript - .deny Meteor 使用..无法让它工作

javascript - Jstree - 如果在 Jstree 中检查了父节点,如何检查子节点?

javascript - Node.js,为事件 'data' 分配回调函数

javascript - 监听事件 "close enough"到元素

.net - .NET 的简单事件总线

javascript - 使用 jquery 一次随机淡出 9 个缩略图的图库

javascript - 如何用 DataTables 和 Excel 解决 parseXML 问题?

javascript - ES6 和 Webpack : import not working

macos - NSImageView 更改事件处理程序

JavaScript 将事件附加到动态呈现的元素