Javascript 按值传播带参数的onclick函数

Javascript 按值传播带参数的onclick函数,javascript,javascript-events,Javascript,Javascript Events,我对如何用有用的参数传播这些onclick函数感到困惑。我对js比较陌生,我仍然习惯于函数作为变量的想法 代码如下: for (var i = 0; i < this.level; i++) { var splotch = document.createElement('div'); // ... // Omitted some styling and formatting // ... splotch.onclick = function() {

我对如何用有用的参数传播这些onclick函数感到困惑。我对js比较陌生,我仍然习惯于函数作为变量的想法

代码如下:

for (var i = 0; i < this.level; i++) {
    var splotch = document.createElement('div');
    // ...
    // Omitted some styling and formatting
    // ...
    splotch.onclick = function() { switchColor(i); }; // The issue lies here
    pallet.appendChild(splotch);
}
然而,参数始终是
i
的值,它比
这个.level
多一个,这向我表明
i
的值并不存在于函数的每个实例中,而是存在于对
i
的引用中


我该怎么修理这个?如果我的方法不能反映最佳实践,我将感谢您的调整。提前感谢。

可能重复:单击时,
onclick
功能将在其自己的范围内运行,而不在for循环的范围内(就页面而言,它可能早就结束了)<函数中的code>i最终起到了隐式全局的作用,因为您(很可能)在全局范围内运行for循环,这意味着
i
从循环的最后一次迭代开始持续。与可能的副本一样,解决方案可以是这样的:
function createSwitchColor(x){return function(){switchColor(x)};}/。。。代码splotch.onclick=createSwitchColor(i)
onclick="switchColor(0)"
onclick="switchColor(1)"
// etc...