发表于: 2019-10-22 23:56:14
1 944
今天完成的事情:
1.任务一基本完成,计时器正常工作。
明天计划的事情:
1.理解代码含义。继续推进任务。
遇到的问题和收获:
1.实现逻辑是,取得3个不同的随机颜色,再取得3个随机不同位置的盒子,把3个颜色分别放入3个盒子。再用计时器点击后工作。
function getColor() {
var rgb;
var r = Math.floor(Math.random() * 256);
var g = Math.floor(Math.random() * 256);
var b = Math.floor(Math.random() * 256);
rgb = "rgb(" + r + "," + g + "," + b + ")";
return rgb;
}
用rgb定义颜色,在0~255数字区间内赋予r、g、b三个字母值,再返回rgb。
function myNum() {
var a = [0, 1, 2, 3, 4, 5, 6, 7, 8];
var b = [];
for (var i = 0; i < 3; i++) {
var num = Math.floor(Math.random() * a.length);
b.push(a[num]);
a.splice(num, 1);
}
console.log(b);
return b;
}
使用洗牌法选出3个盒子。首先定义一个0~8的数组a,一个空的数组b,for循环出3个数字赋予b,每赋予一个,a就减去一个。
function changeColor() {
colorOne = getColor();
colorTwo = getColor();
colorThree = getColor();
li[myNum()[0]].style.backgroundColor = colorOne;
li[myNum()[1]].style.backgroundColor = colorTwo;
li[myNum()[2]].style.backgroundColor = colorThree;
while (colorOne === colorTwo || colorTwo === colorThree || colorThree === colorOne) {
if (colorOne === colorTwo) {
colorOne = getColor();
} else if (colorTwo === colorOne) {
colorTwo = getColor();
}
else if (colorThree===colorOne){
colorThree = getColor();
}
}
}
此时定义的myNum是一个含有3个数字的数组。定义3个colorOne、colorTwo、colorThree赋予颜色,把颜色赋予给3个随机九宫格。使用while语句判断colorOne、colorTwo、colorThree是否有相同数值,若有,则重新取值,若无,则离开while。
然后是写出延迟函数
function begin() {
cle();
changeColor()
window.clearInterval(int);
int = setInterval(begin, 1000);
}
执行后将每次都清除九宫格颜色,再重新赋予。清除的代码是:
function cle() {
for (var i = 0; i < li.length; i++) {
li[i].style.backgroundColor = "rgb(235,147,22)";
}
}//历遍所有li标签,改变backgroundColor
是将所有盒子都变回初始的颜色。
感觉自己的逻辑理的不是很清楚,开始没有理解如何把不同的颜色放入不同的盒子。需要再看看代码,重新加强理解。期间报错了很多地方,比如
li[myNum()[0]]
[]内的函数没有写对。还比如一些参数没有定义就使用了。或者是函数名字引用错误。
都是容易犯的错误,希望继续学习加深理解,毕竟理解了才是自己的。
评论