js并列排名之div图片加载

今天遇到的问题基于上一次的代码:

当投票数相同后,比如最多的都是38票,有三人,此时,改成39时,排名依然是三个第一名

错误代码

if(j<countList.length){
if(countList[j].text===countList[j+1].text){
num[j+1].style.backgroundImage=num[j].style.backgroundImage;
}
}

这里仅仅是对相邻两个票数作比较,且由于num[j].style.backgroundImage;是动态获得的,也就是要更改的图片并不在num中存放,再怎么赋新值也是基于当前情况,因此我的解决办法是先存储图片

var numImg = new Array();
numImg[0]="url('/voteonline/img/num/1.png')";
numImg[1]="url('/voteonline/img/num/2.png')";
numImg[2]="url('/voteonline/img/num/3.png')";
numImg[3]="url('/voteonline/img/num/4.png')";
numImg[4]="url('/voteonline/img/num/5.png')";
numImg[5]="url('/voteonline/img/num/6.png')";
numImg[6]="url('/voteonline/img/num/7.png')";
numImg[7]="url('/voteonline/img/num/8.png')";
numImg[8]="url('/voteonline/img/num/9.png')";
numImg[9]="url('/voteonline/img/num/10.png')";

 

这时赋值就是相对初始情况了。

同时,不再是两两比较,而是当前对象与之后的所有对象比较,虽然会出现重复赋值的情况,但可以避免后面出现票数相同,但名次却不同的情况

for (var j = 0; j < countList.length; j++) {
count[j].innerHTML = countList[j].text;
for(var k=j+1;k< countList.length; k++){
if(countList[j].text==countList[k].text){
num[k].style.backgroundImage=num[j].style.backgroundImage;
}else{
num[k].style.backgroundImage=numImg[k];
}
}

}

posted @ 2019-01-18 20:27  小纸盒  阅读(293)  评论(0编辑  收藏  举报