Uncaught TypeError: Cannot read property 'textfield' of undefined
我收到此错误:{{1}}
答案 0 :(得分:1)
问题是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);
}
});
});
有关详细信息,请参阅此question。
我还应该提到for
循环本身的问题。
for (i = 0; i <= entryArray.length; i++)
<=
不正确。您最终得到i === entryArray.length
,而数组中的最后一个元素具有索引entryArray.length - 1
。使用<
。i
从当前范围转义并直接转到全局(总是使用var i = 0;
,除非您想重用某些局部变量)