HoG*_*oGo 0 javascript for-loop function onclick
我在表格单元格中有hrefs.
我正在使用'for'循环迭代这些单元格以更改onclick函数.
但这不起作用.
这里有两个例子:
这有效:
for (var i = 0; i < tbl.rows.length - 1; i++) { // for each row
var len = document.getElementById("my_table").rows[i].cells.length-1;
document.getElementById("my_table").rows[i].cells[len].innerHTML = "X1";
}
Run Code Online (Sandbox Code Playgroud)
这不起作用:
for (var i = 0; i < tbl.rows.length; i++) { // for each row
var len = document.getElementById("my_table").rows[i].cells.length-1;
document.getElementById("my_table").rows[i].cells[len].onclick = function() {
deleteRows(i);
};
}
Run Code Online (Sandbox Code Playgroud)
可能有什么不对?
for (var i = 0; i < tbl.rows.length; i++) { // for each row
var len = document.getElementById("my_table").rows[i].cells.length-1;
document.getElementById("my_table").rows[i].cells[len].onclick = (function(index) { return function() {
deleteRows(index);
};})(i);
}
Run Code Online (Sandbox Code Playgroud)
上面的代码应该有效.在你的情况下,它不起作用,因为你有一个基本i定义的闭包for (var i = 0,i你传递deleteRows给i定义的点for,在那一刻将等于tbl.rows.length我的代码为每个循环循环创建新的闭包.有关google javascript关闭的更多信息.