我正在用 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/