我已经在函数内部初始化了一个数组
function initColor(r) {
r[0].color = "#007FFF", r[1].color = "#A142FF", r[2].color = "#FF85C2", r[3].color = "#FFA142", r[4].color = "#FF4242";
for (var o = 5; o < r.length; o++) {
var t = d3.color(r[o % 4 + 1].color);
r[o].color = t.brighter(1.5).toString()
}
}
当我尝试调用函数initColor()时,出现类似错误
TypeError:无法设置未定义的属性“颜色”
我的代码有什么错误?
答案 0 :(得分:1)
据我现在所了解和测试的情况,我认为这里犯了一些错误。
首先,如注释所示,您的数组必须包含对象。否则,您将无法更改(或设置)颜色属性。
r[0].color = "#007FFF", r[1].color = "#A142FF", r[2].color = "#FF85C2", r[3].color = "#FFA142", r[4].color = "#FF4242";
在这里,您尝试设置/更改给定数组中前5个元素的color属性。如果仅缺少这些元素之一(或不是object类型),则将引发您提到的错误。
但是您的代码中还有另一个错误:
for (var o = 5; o < r.length; o++) {
var t = d3.color(r[o % 4 + 1].color);
r[o].color = t.brighter(1.5).toString()
}
变量o用5初始化。由于您仅尝试设置数组中前5个元素的颜色,我想您知道,在调用此函数时,您的数组仅包含5个元素。 / p>
o将等于r.length,因此将永远不会使用循环。