Javascript为变量赋值
我试图让表中的一个单元格在单击时告诉我它的编号Javascript为变量赋值,javascript,variables,Javascript,Variables,我试图让表中的一个单元格在单击时告诉我它的编号 for(var j = 0; j < 8; j++){ var cell = row.insertCell(j); cell.name = j; cell.onclick=function(){alert(cell.name)}; } for(var j=0;j
for(var j = 0; j < 8; j++){
var cell = row.insertCell(j);
cell.name = j;
cell.onclick=function(){alert(cell.name)};
}
for(var j=0;j<8;j++){
var单元=行插入单元(j);
cell.name=j;
cell.onclick=function(){alert(cell.name)};
}
但是,这会为每个单元格打印数字8。如何将j
的值保存在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
};
}
for(var j=0;j<8;j++){
var单元=行插入单元(j);
cell.name=j;
cell.onclick=createOnClick(单元格);
}
函数createOnClick(单元格){
返回函数(){
//你想用手机做什么就做什么
};
}
但是离开你的代码,你的单元格
引用似乎是恒定的?你在哪里初始化单元格
?如果你只有一个单元格,这将不起作用。更改单元格
,使它在每次迭代中指向不同的单元格。我添加了“var cell=row.insertCell(j);”你以为这就是你想要的?像这样的?函数a(name){函数b(name){alert(name);}返回b();}一旦我打开笔记本电脑,几分钟后我会给你举个例子。这很有效。我将“alert(cell.name)”放在返回的函数中,现在它可以正常工作了。非常感谢:)