您好我有以下代码示例,其中我试图给每个元素提供不同的onClick功能:
for (var i = 0; i < sizex; i++) {
for (var j = 0; j < sizey; j++) {
var canvas = document.createElement("CANVAS");
var id = i * 10 + j;
canvas.id = "canvas" + id;
canvas.width = 25;
canvas.height = 25;
canvas.style = "border:1px solid black";
canvas.onclick = function() {
canvasClicked(id);
};
document.body.appendChild(canvas);
}
}
问题是它总是被调用id = sizex * 10 + sizey
谁可以将canvasCliced的参数传递给函数,所以这个函数是&#34;不同的&#34;每个画布?
答案 0 :(得分:2)
使用闭包。
从
更改您的点击处理程序canvas.onclick = function() {
canvasClicked(id);
};
形成一个闭包,可以访问该变量的范围。
canvas.onclick = function(nId) {
return function() {
canvasClicked(nId);
}
}(id);