js 在遍歷時只會顯示最后一個遍歷到的結果


在做項目時遇到了一個關於遍歷的問題,

前提是:在ul中有n個li每個li從后台獲取的數據中有一個sign的字段,當sign等於0時(li未被點擊過)li會顯示一個紅點,當sign不等於0時(li已被點擊)紅點會消失,開始時的代碼是這樣的

for(var i=0;i<data.length;i++){

  if(data[i].sign==0){

    $api.addCls($api.dom('#mark_red'), 'mark_red');

  }else{

    $api.removeCls($api.dom('#mark_red'), 'mark_red');

  }

}

這段代碼看似沒錯,運行后發現只會顯示最后一個的結果,最后一個li的sign=0,顯示,不等於零消失,並沒有達到自己想要的效果

這是因為循環時並沒有保存之前的sign的值,到結束最后一個值會覆蓋之前的值,所以只會有最后一個的效果,

解決方法:

首先我先把data里的sign值放入了一個空數組data_read,

var data_read=[];
for(var i=0;i<data.length;i++){
  read=data[i].read;
  data_read.push(read);
}

之后遍歷

$("#ul_read li").each(function(){
  index=$(this).index();
  if(data_read[index]==0){
    $(this).find('.mark').css('display','block');
  }else{
    $(this).find('.mark').css('display','none');
  }
})

這樣就完美解決了上面的問題,當然肯定還有其他更簡便的方法,歡迎批評指正


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM