for(i=0; i<=entryArray.length; i++) {
$(colorChange[entryArray[i]]['textfield']).ColorPicker({
color: "FFFFFF",
onChange: function (hsb, hex, rgb) {
$(colorChange[entryArray[i]]['textfield']).val("#" + hex);
$(colorChange[entryArray[i]]['className']).css(colorChange[entryArray[i]]['cssEntry'], "#" + hex);
}
})
}
我收到此错误: Uncaught TypeError: Cannot read property 'textfield' of undefined
问题在于for
循环和功能定义的结合。
$(colorChange[entryArray[i]]['textfield']).val("#" + hex);
onChange
函数捕获对i
变量的引用。不是价值本身。
代码可以像这样固定:
entryArray.forEach(function (entry) {
$(colorChange[entry]['textfield']).ColorPicker({
color: "FFFFFF",
onChange: function (hsb, hex, rgb) {
$(colorChange[entry]['textfield']).val("#" + hex);
$(colorChange[entry]['className']).css(colorChange[entry]['cssEntry'], "#" + hex);
}
});
});
有关更多详细信息,请参见此问题。
我还应该提到for
循环本身的问题。
for (i = 0; i <= entryArray.length; i++)
<=
在这种情况下不正确。您最终会得到结果i === entryArray.length
,而数组中的最后一个元素具有索引entryArray.length - 1
。使用<
。i
从当前作用域转义并直接转到全局(始终使用var i = 0;
,除非您想重用一些局部变量)本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句