我使用下面的代码获取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;
}
}
答案 0 :(得分:4)
我想那个
shuffleArray(checkColors)
改变数组而不是返回一个新数组。因此
checkColors = shuffleArray(checkColors)
将shuffleArray设置为undefined。
答案 1 :(得分:0)
您已经在shuffleArray中操作数组,不要再将它分配给checkColors。
下面的代码更改应该有效 -
// checkColors = shuffleArray(checkColors);
// replace above line with
shuffleArray(checkColors);
否则,如果要将其分配给checkColors,则需要从shuffleArray返回一个数组。
function shuffleArray(array) {
// your code
// after for loop
return array;
}