我正在使用下面的代码来获取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){给了我一个我不明白的错误,因为我有一个If语句来检查数组是否未定义。

这是Uncaught TypeError: Cannot read property 'length' of undefined函数:

    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;
        }
    }

最佳答案

我猜是

 shuffleArray(checkColors)


改变数组而不返回一个新数组。因此

 checkColors = shuffleArray(checkColors)


将shuffleArray设置为undefined。

09-30 12:47