发表于: 2019-12-03 14:53:40

2 1042


今日完成:


(js任务一)

使用原生js完成九宫格随机三格随机变色。

给九宫格页面加上两个按钮,一个启动按钮,一个停止按钮。

然后给按钮加上点击事件:

<button id="start" onclick="start();"></button>
<button id="end" onclick="end();"></button>


原生js没有生成指定范围随机整数的api,所以得写个生成随机数方法:

//生成minNummaxNum
function randomNum(minNum, maxNum) {
   switch (arguments.length) {
       case 1:
           return parseInt(Math.random() * minNum + 1, 10);
           break;
       case 2:
           return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
           break;
       default:
           return 0;
           break;
   }
}

获取dom中九宫格的div:

<div class="outer">
<div class="one"></div>
<div class="one"></div>
<div class="one"></div>
<div class="one"></div>
<div class="one"></div>
<div class="one"></div>
<div class="one"></div>
<div class="one"></div>
<div class="one"></div>
</div>
var list = document.getElementsByClassName('one');


随机改变九宫格颜色方法:

function change() {
   var div1 = randomNum(0, 9);
   var r1 = randomNum(0, 255);
   var g1 = randomNum(0, 255);
   var b1 = randomNum(0, 255);

   var div2 = randomNum(0, 9);
   var r2 = randomNum(0, 255);
   var g2 = randomNum(0, 255);
   var b2 = randomNum(0, 255);

   var div3 = randomNum(0, 9);
   var r3 = randomNum(0, 255);
   var g3 = randomNum(0, 255);
   var b3 = randomNum(0, 255);

   list[div1].style.backgroundColor = "rgb(" + r1 + "," + g1 + "," + b1 + ")";
   list[div2].style.backgroundColor = "rgb(" + r2 + "," + g2 + "," + b2 + ")";
   list[div3].style.backgroundColor = "rgb(" + r3 + "," + g3 + "," + b3 + ")";

   console.log({div1,r1,g1,b1});
   console.log({div2,r2,g2,b2});
   console.log({div3,r3,g3,b3});

   console.log("====================================================")
   
}


点击按钮后,要让change方法一直循环执行。使用setInterval实现

function start(){
    stop = setInterval(change,1000);
}
function end() {
   clearInterval(stop);
   location.reload();
}

配合end方法停止并刷新页面。


测试一下:

在change()方法中加入断点

点击开始按钮后debug:

可以看到随机数已经生成。继续执行

执行完第一条对div背景色css操作后:

div1:6 也就是第7个格子已经变色了,然后继续debug:

两个格子已经变了,继续debug

好像有点问题呢,一轮下来只有两个格子变色了。要求是三个!

问题出在下面这个代码上

var div1 randomNum(09);

从·list数组中取三个,用随机数取没问题,但有一点需要注意:不能重复!

取格子的随机数不能重复。颜色rgb可以重复

再写一个生成三个不重复随机数的方法:

//生成三不重
function three() {
   var first = randomNum(0, 8);
   var second = randomNum(0, 8);
   var third = randomNum(0, 8);
   if (second === first) {
       while (second === first) {
           second = randomNum(0, 8);
       }
   }

   if (third === second) {
       while (third === second) {
           third = randomNum(0, 8);
       }
   }
   if (third === first) {
       while (third === first) {
           third = randomNum(0, 8);
       }
   }

   return [first, second, third];
}






遇到的问题:

外联引入js文件,刚开始总是无效。

<script src="../js/task1.js" type="javascript" ></script>

最后发现去掉type="javascript"就好了。



收获 :

了解了js对dom元素的简单操作

明日计划:

完成任务一的深度思考,开始任务二。

css没做的深度思考也穿插在js任务中补吧



返回列表 返回列表
评论

    分享到