使用参数按值传播onclick函数

时间:2014-07-12 04:24:48

标签: 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() { switchColor(i); }; // The issue lies here
    pallet.appendChild(splotch);
}

该循环旨在创建一个用户可以选择的小托盘颜色。 onclick事件应该是特定于迭代的。也就是说,在HTML中,属性看起来像:

onclick="switchColor(0)"
onclick="switchColor(1)"
// etc...

然而,论证总是i的价值超过this.level,这表明i不会持续存在在函数的每个实例中,而是引用i

我怎么能修补这个?如果我的方法没有反映最佳实践,我会很感激您的调整。提前谢谢。

0 个答案:

没有答案