javascript“Uncaught TypeError:无法读取未定义的属性'textfield'”

时间:2015-05-14 12:29:49

标签: javascript

Uncaught TypeError: Cannot read property 'textfield' of undefined

我收到此错误:{{1}}

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;,除非您想重用某些局部变量)