0

我正在用 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+')', '', '')};
4

2 回答 2

1

这个人和你有同样的问题,有一个很好的答案: JavaScriptclosure inside loops – 简单实用的例子

于 2013-04-02T23:17:51.707 回答
1

有一种更简单的方法可以解决您的问题。我有这个问题的更复杂的版本。

对于每个元素,只需制作一个自定义属性。

$(a).attr("myValue", i);

然后在.click上,只需传递 Number($(this).attr("myValue"));

于 2013-04-02T23:24:32.283 回答