var colors = generateColors();
var squares = document.querySelectorAll(".squares");
var colorDisplay = document.querySelector("#colorDisplay");
var pickedColor = pickColor();
var numSquares = 6;
assignColors();
function assignColors(){
for (i = 0; i < numSquares; i++){
squares[i].style.backgroundColor = colors[i];
}
};
function generateColors(){
//Create arr
var arr = [];
//Create Colors and Push Them to arr
for (var i = 0; i < 6; i++){
//Create Colors
var r = Math.floor(Math.random() *256);
var g = Math.floor(Math.random() *256);
var b = Math.floor(Math.random() *256);
var color = "rgb(" + r + ", " + g + ", " + b + ")";
//Push to arr
arr.push(color);
};
//Return arr
return arr;
};
function pickColor(){
//Create Random Number
var random = Math.floor(Math.random() * 6);
//Display Color
colorDisplay.textContent = colors[random];
//Return Picked Color
return colors[random];
};
所以我想使用变量numSquares
,因为它在我的代码中更实用。但它只适用于函数assignColors()
。我想用numSquares
替换其他两个函数中的6,但它不起作用。
答案 0 :(得分:1)
在为变量generateColors()
指定值之前,您正在调用pickColor()
和numSquares
,因此其他函数由于提升的工作原因尚不知道该值。将变量移动到第一行,它应该工作。
var numSquares = 6;
var colors = generateColors();
var squares = document.querySelectorAll(".squares");
var colorDisplay = document.querySelector("#colorDisplay");
var pickedColor = pickColor();
另外,我不确定这个变量是如何与布尔值相关的。在我看来,在generateColors()
和assignColors()
中,它作为条件运行,然后在pickColors()
中作为一个数字。然后你从这些函数返回除布尔值之外的东西。
答案 1 :(得分:0)
这是因为在numSquare获取赋值之前调用generateColors()和pickColors()。 Javascript执行提升,一旦它通过整个代码将变量,对象或函数分配给范围,但随后它逐行解释并分配值。