发表于: 2017-06-24 23:55:35
1 813
一、今天完成的事:
1.重写了游戏流程页面,根据dom节点操作所有的流程;
2.重写杀人判断,将已经死了的玩家号码存储,便于在流程页面插入杀死的玩家
二、明天的计划:
1.继续任务4
三、遇到的问题:
1.流程页面插入杀死的玩家信息的时候,第一天正常,第二天发现判断中的dom节点大于页面中的dom节点,导致无法出入死亡玩家信息,循环做的有问题,明天继续研究;
问题代码如下:希望师兄解惑
for (var i = 0; i < n.length; i++) {
if (i%2 == 0 ) {
$(content[i]).children("#a1").after("<p class='die-color'>" + n[i] + "号被杀死 ," + n[i] + "号是水民" + "</p>");
}else if (i%2 == 1) {
$(content[i-1]).children("#a4").after("<p class='die-color'>" + n[i] + "号被投死 ," + n[i] + "号是" + allPlayers[n[i]-1].id + "</p>");
}
四、收获:
1、将杀死的玩家号码存储起来,然后传到sessionStorage,之后再流程页面将所有已死的玩家号码取出来,添加到流程节点中,但是需要注意,每次都需要将数组清空,这样才能获取到最后点击的玩家的号码:
var dieNums = [];
dieNums.push(allPlayers[this.index].num);
sessionStorage.setItem("dieNums",JSON.stringify(dieNums));
2、在流程页面提取死亡玩家号码的时候,需要注意,先在别的页面定义一个空数组并传到sessionStorage,再将死亡玩家号码,添加到该数组中,不然的话,每次只能生成一个数据,无法取到所有死亡玩家的号码:
var dieNums = JSON.parse(sessionStorage.getItem("dieNums"));
console.log(dieNums);
var dieNum = JSON.parse(sessionStorage.getItem("dieNum"));
if (dieNums == null) {
}else {
dieNum.push(dieNums[dieNums.length-1]);
}
3、死亡玩家的数组提取后,是由重复数据的,因为每次会发生两次页面跳转,导致数组中会有重复数据,需要添加去重函数:
注意indexof的用法和if中的判断;
// 最简单数组去重法
var n = []; //一个新的临时数组
function unique1(array){
//遍历当前数组
for(var i = 0; i < array.length; i++){
//如果当前数组的第i已经保存进了临时数组,那么跳过,
//否则把当前项push到临时数组里面
if (n.indexOf(array[i]) == -1) n.push(array[i]);
}
return n;
}
unique1(dieNum);
console.log(n);
评论