发表于: 2020-02-14 23:51:46

1 1483


今日完成

for(let a=0;a<cc4.length;a++){
x[a].onclick=function(){
for(var i=0;i<cc4.length;i++){//显示图标之前,先重置图标隐藏
y[i].style.visibility="hidden";
}
y[a].style.visibility="visible";
}
}
//跳转
function skip() {
window.location.href = "../js2-5/js2-5.html";
}
杀人单选框图标代码完成,跳转法官日志
杀手杀人下方,输出,几号死亡,且身份是什么
想法,就是传递出点击的字符串a,的实际值,再根据a来输出
for(let a=0;a<cc4.length;a++){
x[a].onclick=function(){
for(var i=0;i<cc4.length;i++){//显示图标之前,先重置图标隐藏
y[i].style.visibility="hidden";
}
y[a].style.visibility="visible";
}
// sessionStorage.removeItem("hao");//清除hao内部的值,重置
sessionStorage.clear();//清除所有,重置
sessionStorage.setItem("hao",a);//传值
//跳转
function skip() {
window.location.href = "../js2-5/js2-5.html";
}
代码含义为最后出现杀人图标的序号传递到另一个页面,前面的清除是重置的意思
ps:传值穿的是a所代表的值,所以不加引号,加上引号穿的是字符串a
遇到问题:
sessionStorage.removeItem("hao");
sessionStorage.clear();//清除所有
重置都没有键值对"hao"
重新再做,如下
for(let a=0;a<cc4.length;a++){
x[a].onclick=function(){
for(var i=0;i<cc4.length;i++){//显示图标之前,先重置图标隐藏
y[i].style.visibility="hidden";
}
y[a].style.visibility="visible";
sessionStorage.removeItem("xuhao");
sessionStorage.setItem("xuhao",a);
console.log(a);
}
//清除hao内部的值,重置
// sessionStorage.clear();//清除所有,重置
// sessionStorage.setItem("hao",a);//传值
}
作用遇对了之后,正常传值
ps:
1.键值对的键值,如上述的a,加引号就成了字符串,传入另一个页面的值就是a本身,
所以,如果传入a所代表的的值,就不能加引号
2.在传值之前,要清空之前的传值,含义是,如果点击身份块,(就是点了一个,没有提交,中途改变又点了另一个)
点击一次就会提交一个值,为了确认最终选好的值(最后一次杀手图标出现的位置),需要在之前重置
遇到问题:
传过来的值是字符串,并且是数组的索引值,索引实际显示实际杀人序号需要计算(加一),
但是一元计算符号,和Number()都没有转换为数字,显示效果还是被当成字符串(没有计算)
// Number(xuhao);//这种方法无法转换成数字,加号连接时还是当成字符串
if(xuhao>=0)
{
document.getElementById("p1").innerHTML=1+xuhao+"被杀死"
//document.getElementById("p1").innerHTML=(1+xuhao)+"被杀死"
}
且,var xuhao=JSON.parse(sessionStorage.getItem("xuhao"));

转换后,是显示直接计算的数字,而不是数组,即直接相加显示效果,但是用索引值xuhao[0]+1,是不行的


做不到把整个流程的伪代码写出来,就按照模块,把能想到的模块先给做出来
1.杀人页面的怎么显示第二次乃至多次时,之前杀过的人是暗色表示
每次点击杀人传递到法官页面的数字,组成数组,然后在传递回来,
以数组的值当成,身份模块的索引值,遍历暗色,且点击出现提示框
2.什么时候跳法官页面,什么时候跳出继续投死杀人的页面
在杀人页面的投死按钮增加一个条件函数,
前提,新设置一个变量,值是传递过来的总的身份数组,
每次点击杀人就把相应的身份从数组中删去,
在此前提下,点击投死,判断
如果,杀手值的数量大于平民值得数量,跳转结果页面,杀手胜利
如果,杀手值的数量==0,跳转结果页面,平民胜利
否则,(两个条件都达不到),跳转法官投票页面继续杀人
继续写法官页面
传递数组设置身份变量\
//传递数组
var get = localStorage.getItem("key"); //读取数组,显示正常,传递出来
var cc4 = JSON.parse(get); //再把数组转换成字符串
//设置身份变量
var shenfen;
if (cc4[xuhao] == 0) {//判断身份
shenfen = "杀手"//对应html元素输出身份
} else {
shenfen = "平民"
}
var a=document.getElementsByClassName("main-2-p");
a[0].onclick=function(){
window.location.href = "../js2-6/js2-6.html";
}
// Number(xuhao);//这种方法无法转换成数字,加号连接时还是当成字符串
if(xuhao>=0)
{
document.getElementById("p1").innerHTML=1+xuhao+"号被杀死,他的身份是"+shenfen;
//document.getElementById("p1").innerHTML=(1+xuhao)+"被杀死"
}
显示:
接下来按照顺序点击,否则出现提示框,请按照顺序点击且保持颜色变暗
中间发现问题,不管杀不杀人,投死都会跳转,所以做个判断没人时不会跳转,显示杀人
所以在投死按钮做个判断
//方法一:错误,a的值不是目标的值,始终为8
console.log(a);
function skip() {
if (a >= 0) {//只要点击,索引值就是大于或者等于0
window.location.href = "../js2-5/js2-5.html";
} else {//不点击,就没有索引值显示选人
window.alert("请选人");
}
}
显示:
所以为杀人直接点击投死还是会直接跳转,因为a初始有值(想设定的是初始无值显示"请杀人",有值跳转)



返回列表 返回列表
评论

    分享到