发表于: 2019-04-20 22:32:55

1 235


今天完成的事情,修改日报所述的iimportant权重问题,又又又出bug了。。



遇到的问题1。


$(".game-box").click(function () {
   // $('.role').removeClass('message-box');
   //运行点击事件时,清除role的类名,如果没有这个类名的话.
   $(".role").removeClass("message-box");
   //点击获取dom,k所以盒子的kill添加,图片隐藏,因为图片本身时隐藏的.不写的话,它无法点击
   //其他盒子的时候显示
   $(".kill").css('display', 'none');

   //children查找子元素role之后,追加类名.改变颜色.
   // $(this).addClass('message-box');
   $(this).children(".role").addClass("message-box");
   //当前图片显示
   // $(this).siblings('img').show();
   $(this).children('img').show();
});

之前,获取当前点击的div,然后给它添加div的时候。需要背景颜色无法覆盖的问题,那个时候,就随便试了一下iimportant,就把问题解决了。但是考虑到代码的可维护性的话,我们还是在js里面通过添加,选择器的方法给它覆盖掉。



但是我实在想不到为什么覆盖不掉颜色。。导致我死亡的div,颜色渲染还是使用了,iimportant。



找到老宋,老宋问我,老宋给我的思路是运行顺序出错了。我检查了一下,按理说,我点击事件放到ready函数里面。其他加载完再去使用,应该不影响。

最后拽着老宋一起去排查问题,最后确定了是因为,权重的问题。按理说,后面的css样式会覆盖掉前面的css样式。


所以。

//id选择器使用。
for (let i = 0; i < list.length; i++) {
   let div = (`<div class="game-box" id="kills">
               <div class="role ${list[i].class}">${list[i].name}</div>
               <div class="number">${i + 1}${typeface}</div>
               <img class="kill" src="../img/img-7-2.png" height="30" width="30"/>
               </div>`
   );
   //jQuery模板渲染html
   $("#gaine").append(div);
}


.role{
 //background: #f5c97b;
 background-color: #f5c97b;
 margin: auto;
 width: 6rem;
 line-height: 5rem;
 border-top: 3px solid #fff;
 border-right: 3px solid #fff;
 border-left: 3px solid #fff;
}
.death{
 background: #565656;
}
.message-box{
 background-color: #21a8c8;
}

role,应该在最前面,但是我们后面添加css选择器,却没能覆盖掉。


最后把death写在了,role的后面,可以被覆盖掉了。按理说,我的class添加的顺序是没有错的,但是万万没有想到的地方是,我使用了less。所以后面添加的css属性,与后面因为点击事件覆盖所添加的点击事件,我随便找了个地方就放进去了。因为作用域所以就导致没有办法被覆盖,而且。或者说,因为less的作用域的关系,是我们的role选择器,在描述的时候,更加精确一些,导致,下面的选择器的权重低于它。


我的role的描述,是在.main.class.class.role;。所以权重会高一些。


亚龙和他们没有出问题的原因是因为,页面过于简单,所以没有使用sass与less。



遇到的问题2。。第一天杀完人,投票页面的时候,我们往里面push的是death的0号位,老宋当时给我讲,让我投票完,在重新创建一个新的数组,在death,里面去push,做第二天的数组。。尴尬的地方就在于。。我没当回事。。因为那个时候,实在没有转过这个弯。


if( figure==5){
   //browser是玩家信息,由于执行环境的关系叫browser.death是死亡数组.push进去投票死去的人.
   var browser = JSON.parse(sessionStorage.getItem("list"));
   var death=JSON.parse(sessionStorage.getItem("death"));
   death[death.length-1].push({name: browser[subscript].name,number: browser[subscript].number,state: browser[subscript].state=2,class:browser[subscript].class="death"});
   //浏览器存值,death死亡数组存入。list,存入死掉的玩家状态。
   death.push([]);
   sessionStorage.setItem("death",JSON.stringify(death));
   sessionStorage.setItem("list",JSON.stringify(browser));
   //投票生成天数数组。
   sessionStorage.setItem("dies",JSON.stringify(death.length));
   //修改浏览器步骤.
   figure=1;
   sessionStorage.setItem("figure",figure);
   window.location.href="../html/start-game.html";

导致,后面投完票之后,我的数组长度变成2了,我傻乎乎的拿着1去判断。这也算不上什么大问题。最尴尬的是,杀人与投票的提示又又又出现问题了。


第一天杀人之前,我的数组长度是1,death【 [] 】;所以我杀完人,肯定是取0号位的,0号位。投票是0号位的,1号位。

但是,但是第二天,我数组长度就是2了啊,我需要取,deah[ [] ],1号位的,0号位,与1号位的·,1号位。

尴尬的地方就在于,


第一天杀人的话,你取的是,deaht【0】【0】号位。所以当时咱们数组长度是1,death.lenth-1.

第二天杀人,我们取death【1】【0】,当时我们的数组长度是2,所以death.lenth-1,但是death.lenth-1,这肯定会报错的,因为我们得取,0号位的。


我感觉我们需要写一个判断,但是我之前的判断就是。



if (digit==2){
   $(".btn-one").eq(-1).css("background","#696969");
   $(".left-triangle-one").eq(-1).css({"border-right":"30px solid #696969"});
   let murder="号被杀死杀死,真实身份是";
   let information=(`<p class="situation">${death[death.length-1][death.length-1].number}${murder}${death[death.length-1][death.length-1].name}</p>`);
   $(".weather").eq(-1).append(information);
}


如果是步骤2的话,就xxx。


一时半会没有想到好的思路。。


今天的收获,在css权重问题,覆盖,样式加载顺序。之前写css的时候,有id选择器,各种选择器可以用,也没有留意过这个问题。但是js里面,id选择器我们只能唯一使用,加入iimportant。根本不好维护。



明天改bug写判断。


返回列表 返回列表
评论

    分享到