【发布时间】:2018-03-29 16:53:02
【问题描述】:
我正在使用下面的代码来获取 3 个 div 使用的颜色列表。如果这个 div 有一个颜色集,那么它应该被推入数组checkColors。
var checkColors = [];
$("div[style]").each(function(){
getColor = $(this).css("color");
if(getColor){
checkColors.push(getColor);
}
});
if(checkColors){
checkColors = shuffleArray(checkColors);
if(checkColors.length > 0){
if(checkColors[0]){
backgroundColor = checkColors[0];
}
if(checkColors[1]){
primaryColor = checkColors[1];
}
if(checkColors[2]){
secondaryColor = checkColors[2];
}
}
}
但是,if(checkColors.length > 0){ 给了我一个 Uncaught TypeError: Cannot read property 'length' of undefined 错误,我不明白,因为我有一个 If 语句来检查数组是否未定义。
这里是shuffleArray() 函数:
function shuffleArray(array) {
for (var i = array.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
【问题讨论】:
-
if(checkColors){始终为真。 -
你的
shuffleArray()看起来怎么样? -
显然,调用
shuffleArray会导致undefined,它被分配给checkColors。它可能缺少return xyz,但由于您还没有显示它... -
@scrappedcola:
if (checkColors)很好,但正如乔纳斯在上面指出的那样,在给定的代码中它总是正确的。 (另外:typeof是一个运算符,而不是一个函数。与任何其他运算符相比,它的操作数不再需要放在()中。) -
好吧,在 shuffleArray 函数中确实没有“返回”,shuffle 数组改变了数组并且没有返回任何内容。
标签: javascript jquery arrays sorting undefined