Javascript将值赋给变量

ste*_*fan 2 javascript variables

我试图在表格中制作一个单元格,当我点击它时告诉我它的数字.

for(var j = 0; j < 8; j++){
    var cell = row.insertCell(j);
    cell.name = j;
    cell.onclick=function(){alert(cell.name)};
}
Run Code Online (Sandbox Code Playgroud)

但是,这会打印每个单元格的数字8.如何保存jin 的值cell.name,而不是仅仅指向变量j

谢谢.

Joo*_*oon 5

重要提示:所有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
    };
}
Run Code Online (Sandbox Code Playgroud)