发表于: 2020-05-12 23:01:26
2 1665
今天完成的事情:
看着代码分析属性,自己敲js。任务1基本完成,数组打乱方法和颜色提取基本理解。如何循环以及不断循环,打断循环,点击事件的熟练度上升了。
遍历数组,重置颜色,使用for循环,变量i=0,i<8则增1,提取格子dom节点,填入【i】,样式更改为原本的颜色,这样就可以每次都刷新一遍颜色重新随机三个格子变色。
提取颜色:根据rgb256个三原色阶级,使用函数方法,内部三个变量都使用数学方法,函数解析字符返回整数((随机数)*(255)转换16进制),输出符号#+r+g+b获取随机的颜色。
抽取三个数,第一次使用的是声明三个变量,分别设置数学方法 向下取整(随机*8),然后设置if a!=b&&b!=c&&a!=c则输出改变样式,else 重新循环函数。
设置interval进行循环,但是设置循环的时候因为设置的若有抽取的数值相等则重复循环,导致的多次interval循环直接闪爆,浏览器三分钟忘了刷新差点把内存占满。。
后面跟换为洗牌算法,首先设置函数,引用数组变量a,内部循环数值长度值-1也就是8,大于零开始从8自减1到0为止循环,
变量rand=取整随机数*数组长度。变量p赋值为数组最后一位数(为了接下来的交换),数组最后一位数a【i】和抽取到的数值交换达到洗牌的效果。
也就是:抽到的数 ←→排列最后的数值 交换,以此类推,因为i自减,所以抽取9次相当于抽取交换9次,这就打乱了数组也就是洗牌。然后使用a【随便三个数】来达到随机三个数的效果。
var rand,a = [0,1,2,3,4,5,6,7,8]
function (a){
for(var i = length - 1, rand;i >= 0; i--){
rand = Math.floor(Math.random()*(i+1))
var p = a[i];
a[i] = a[rand];
a[rand] = p ;
}
}
任务一完成。
明天计划的事情:
可以开始任务2了。
遇到的问题和收获:
reset为啥调用到下面的threebox报错不明白 。
跑去看为啥变量旁边为啥要俩加号。。因为没用过rgb的颜色代码。。犯了个低等级错误。
评论