发表于: 2017-04-03 22:49:55
2 1199
今天完成的事情:
开始做任务一。
开始比较懵,不知道从哪里下手,但后来经过参考其他师兄的代码、并经过思路整理,逐渐理清了思路:
先利用Math.round(Math.random()*255)实现了0-255随机数的选取,然后再得出rgb3个值的选取,做出了随机颜色的函数;
再利用Math.floor(Math.random()*9)实现了0-8随机数的选取,并加上if判断函数不让选重,实现了随机选取3个格子的函数;
再利用document.style.backgroundColor实现随机颜色对随机格子的赋值,实现单次换颜色的函数;
再利用for循环对变色后的格子进行还原,然后再变色;
利用setInterval进行每隔一定时间进行变色,并赋给按钮的点击效果;
利用clearInterval(y)取消定时,并将颜色还原,函数赋给停止变色按钮的点击效果。
明天计划的事情:
将任务一的知识点再复习一下,然后开始做任务二。
遇到的问题:
var x=document.getElementsByClassName("box1");
function reset() {
clearInterval(y);
for(var i=0;i<=x.length;i++) {
if (x[i].style.backgroundColor!= "rgb(255,165,0)") {
x[i].style.backgroundColor = "orange";
}
}
}
运行的时候一直报错,显示style未被定义。
开始以为是颜色不能识别的问题,后来经过查资料和验证,orange、rgb、十六进制颜色在JS中其实都可以正常识别和赋值;
又怀疑是x没有被获取到,后来发现也不是这个问题。
后来经过雪峰的提醒才发现是for循环的问题,i<=x.length,这样的话i可以取到9,但实际上取不到导致出错。只需要将<=改为<即可。
也知道了如果style报错,说明函数本身取值有问题,因为取不到值所以找不到该样式;而如果backgroundColor报错则说明是颜色值有问题。
收获:
random() 方法可返回介于 0 ~ 1(大于或等于 0 但小于 1 )之间的一个随机数;round() 方法可把一个数字四舍五入为最接近的整数;floor() 方法可对一个数进行向下取整;ceil() 方法可对一个数进行向上取整。
以及相互结合实现不同范围随机数的选取。
setInterval(代码,交互时间),在执行时,从载入页面后每隔指定的时间执行代码。
clearInterval() 方法可取消由 setInterval() 设置的交互时间。
语法:clearInterval(id_of_setInterval)
参数说明:id_of_setInterval:由 setInterval() 返回的 ID 值。
随机颜色的生成:
var r1=Math.round(Math.random()*255);
var g1=Math.round(Math.random()*255);
var b1=Math.round(Math.random()*255)
color1="rgb("+r1+","+g1+","+b1+")";
评论