zoukankan      html  css  js  c++  java
  • 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');
      }
    })

    这样就完美解决了上面的问题,当然肯定还有其他更简便的方法,欢迎批评指正

  • 相关阅读:
    CTF简介
    最先与最后
    记一次某校版facemash的搭建
    ipv6入门
    win10开启IPv6的两种方法
    安装 Go 1.11 在 Ubuntu 18.04 & 16.04 LTS
    python开发者的AsyncIO
    Python 异步--Await the Future
    Python元类
    alias 和 unalias 命令
  • 原文地址:https://www.cnblogs.com/yunyea/p/6889229.html
Copyright © 2011-2022 走看看