我试图让表格中的一个单元格在我单击它时告诉我它的编号。
for(var j = 0; j < 8; j++){
var cell = row.insertCell(j);
cell.name = j;
cell.onclick=function(){alert(cell.name)};
}
但是,这会为每个单元格打印数字 8。如何保存j
in的值cell.name
,而不是让它指向变量j
?
谢谢。
我试图让表格中的一个单元格在我单击它时告诉我它的编号。
for(var j = 0; j < 8; j++){
var cell = row.insertCell(j);
cell.name = j;
cell.onclick=function(){alert(cell.name)};
}
但是,这会为每个单元格打印数字 8。如何保存j
in的值cell.name
,而不是让它指向变量j
?
谢谢。
重要提示:所有 JavaScript 开发人员都应该知道这一点。它会导致各种很难找到的奇怪错误。
这是 JavaScript 新手的常见错误。我以前也犯过同样的错误。
循环内的函数不是为每次迭代创建的。它是具有相同闭包范围的同一个函数对象。因此,您的单元格将具有完全相同的 onclick 回调。
我的建议是永远不要在循环内创建函数。相反,创建并调用一个返回回调函数并将其分配给 onclick 的函数。
for (var j = 0; j < 8; j++) {
var cell = row.insertCell(j);
cell.name = j;
cell.onclick = createOnClick(cell);
}
function createOnClick(cell) {
return function () {
// do whatever you want to do with cell
};
}