动态设置功能参数

时间:2014-04-03 20:09:19

标签: javascript function

您好我有以下代码示例,其中我试图给每个元素提供不同的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;每个画布?

1 个答案:

答案 0 :(得分:2)

使用闭包。

更改您的点击处理程序
canvas.onclick = function() {
     canvasClicked(id);
};

形成一个闭包,可以访问该变量的范围。

canvas.onclick = function(nId) {
    return function() {
       canvasClicked(nId);
    }
}(id);