发表于: 2019-12-07 20:02:37

1 1331


今日完成:

进一步学习页面间数据传递; 如何根据需要显示和隐藏视图; JS对DOM样式和内容进行更复杂的操作
先理清楚,传递身份的逻辑是什么,再思考怎么去实现它
思路:
1.杀手,平民的乱序数组有了
2.怎么实现点击后会出现跟总人数相同的页面?
2.1且按照数组的顺序,第一张页面都相同,点击出现数组中的对应的值,再次点击,传递到下一个页面?
3.在数组结束后,点击跳到法官页面
问题二,逻辑上没思考同,可能掌握的知识量不够,先把js3的知识点先过一遍
//---------------------------------------------------------------------------------------------------------
从第二步开始,出现错误
跳转的是一个页面而不是多个页面,还在想怎么根据数组的一个元素,匹配一个页面,还要根据总输入人数匹配多少个页面,
结果不是,而是通过DOM元素来操作同一个页面的样式,具体生效是根据点击事件来运行函数
//-------------------------------------------------------------------------------------------------------------------------
设置包含杀手和平民的乱序数组
遇到问题:
问题1:
ps:原本的代码没有保存,但是显示未定义,就把步骤拆分,一步步来了

用push()抓取元素放到空数组可行

-----------------------------------------------------------------------------------------------------------------------------------------------------
用加号实验

如上显示,元素加上了,但是+起到的是连接作用,把元素和数组的第三个元素连接起来,
用typeof测试,发现成了字符串
优化一下代码(把1当成字符串)

ps:直接a1=a1+,1是不行的,逗号(,)的地方会报错
总结:还是用push()抓取稳妥,加号数组类型都改变了(数组变字符串,不同应用场景,比如任务一的颜色)
--------------------------------------------------------------------------------------------------------------------------------------------------
问题2:
js中的typeof元素在html中输出

数组,在html中的输出

但是,直接加上字母

测试类型:console.log(typeof a);
控制台显示:

原因:是没有定义的,即不属于任何类型,所以数组报错
为字母n添加引号,n的类型就转变为字符串

ps:带引号表示字符串,在js代码和控制台显示都是带引号的,但是html输出时是没有的
总结:单的的字母是没有类型的
----------------------------------------------------------------------------------------------------------------------------------------
问题3:
//创建函数,得到杀手数组,
function bb(){
var aa=[];//创建一个空数组
for (var a=0;a<lil.value;a++){
aa.push(n)//先暂定为n,向数组aa中抓取n,次数为lil的value值
//即:数组中元素值都是n,个数为lil的value值
}
console.log(aa);//显示无效
return aa;
}
console.log(bb());//显示未定义
遇到问题:数组后台没有显示,
原因:push()括号中,直接写入字母n没有类型
解决:加上引号,或者换成数字
---------------------------------------------------------
遇到问题:
//合并两个数组,得到一个代表杀手和平民的数组
var cc2=aa1.concat(bb1);
console.log(cc2());
控制台显示:

原因:aa1.concat不是函数
修改:
//合并两个数组,得到一个代表杀手和平民的数组
var cc2=aa1().concat(bb1());
console.log(cc2());

显示

原因:在这里aa1(),bb1()又输入了一次,相当于函数又运行了一次
错误
修改,合并函数内部的数组
var cc2=aa2.concat(bb2);
console.log(cc2);
错误
原因:数组在函数内部,合并显示数组未定义
解决:把数组调出函数内部,设置成全局变量
成功
显示

然后,把这个数组乱序
遇到问题:
代码:
var cc1=[]
var b=cc2.length;
console.log(b);
for (var a=0;a<b;a++){
var ran=Math.round(Math.random()*(b-1));//随机产生0~7的随机数
cc1.push(cc2[ran]);
cc2.splice(ran,1);
}
console.log(cc1);
显示:

遇到问题:这不同个数的未定义是怎么回事?
原因:上述代码中红字部分:随机产生0~7的随机数,每次都是8位数,但是cc2,每次都会被删除一个元素,所以出现undefined未定义
解决:b-1改为:cc2.length-1
//九选九,乱序排列
var cc1=[]
var b=cc2.length;//也可以不设置b=...,改为总输入人数play.value
for (var a=0;a<player.value;a++){
var ran=Math.round(Math.random()*(cc2.length-1));//随机产生0~7的随机数
cc1.push(cc2[ran]);
cc2.splice(ran,1);
}
console.log(cc1);
显示:

每次刷新,都是一个新的乱序数组
把乱序的数组传递到下一个页面,识别为0时就是杀手,为1时就是平民
ps:
改进:
数组不需要写在函数内部得到,只需要用到遍历

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
方法二:
九选九的变种:
直接把按照顺序来的数组传入下个页面,在下个页面中,直接进行随机挑选,然后删除挑选过的元素






遇到问题:
1.任务的逻辑问题,思考错误,想的太难了,把自己搞蒙了,上面已经描述

2.写出来的的,跟想出来的,还是有一定差距的,就比如html输入,比如直接添加金函数的字母等等,都有出入,需要多动手写代码,把错误和想当然显露出来,总结并加以改正,加深印象

收获:

1.同上,一些错误观点的改正

2.基础的实际应用

明日计划:继续任务3



返回列表 返回列表
评论

    分享到