我正在讨论如何使用有用的参数传播这些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
。
我怎么能修补这个?如果我的方法没有反映最佳实践,我会很感激您的调整。提前谢谢。