如果我使用循环创建大量HTML元素,比如
for (i= 1; i < 100; i++) {
var my_element = document.createElement ("td");
row.appendChild (my_element);
my_element.onclick = function () {my_function (i));
}
Run Code Online (Sandbox Code Playgroud)
然后当单击该元素时,传递给的i的值my_function始终为100,无论调用它的是哪个数字元素.我通过使用解决了这个问题
my_element.id = "something"+i;
my_element.onclick = function (e) {my_function (e.target.id)};
Run Code Online (Sandbox Code Playgroud)
(对于Internet Explorer,显然target需要srcElement.)我很想知道是否有任何方法可以创建函数而无需像这样添加ID到元素.
i循环的每次迭代的更改值.您需要一个闭包来捕获以下值i:
(function(i) {
my_element.onclick = function () {my_function (i)};
}(i))
Run Code Online (Sandbox Code Playgroud)