发表于: 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]]

[]内的函数没有写对。还比如一些参数没有定义就使用了。或者是函数名字引用错误。

都是容易犯的错误,希望继续学习加深理解,毕竟理解了才是自己的。


返回列表 返回列表
评论

    分享到