zoukankan      html  css  js  c++  java
  • each和for一起使用

    在自己项目中遇到问题,思考之后想着记录下来。

    后台返回的数据格式为results.list:[{"declare/check":"1","declare":"1"}];

    var data = results.list;
    var arr=[];
    var dataNum= data[0];

    通过下面的for把数据变为arr=[{id:"declare/check",num:1},{id:"declare",num:1}]
    for(var i in dataNum){
      var json={};
      json.id=i;
      json.num=dataNum[i];
      arr.push(json);
    }

    遍历左侧菜单当左侧菜单的key与后台传的key值相同则再左侧菜单显示添加的数量 

    当时有个问题就是当审批完这条数据后(也就是num=0时后台就不返回这个key和数量)

    我写的each和for遍历为下面

    $("#side-menu ul li a[datakey]").each(function(){
      if(arr.length!=0){
        for(var i=0;i<arr.length;i++){
          var jsonnum=arr[i];
          if(jsonnum.id== $(this).attr("datakey")){
            $(this).children("b").html(" ("+jsonnum.num+")");
          }
        }
      }else{
        $(this).children("b").html("");
      }
    });

    开始没有加break而且在if下面没有else的时候是显示正常的,

    出现的问题是当审批完成后这条数据的key和num没有返回来,

    则数量还是存在左侧菜单中。(当时是写了个定时器来监控左侧数量的,但是除非刷新后才行)

    修改之后 

    $("#side-menu ul li a[datakey]").each(function(){
      if(arr.length!=0){
        for(var i=0;i<arr.length;i++){
          var jsonnum=arr[i];
          if(jsonnum.id== $(this).attr("datakey")){
            $(this).children("b").html(" ("+jsonnum.num+")");
            break;//没有加这个break则左侧菜单全部不显示 添加后则跳出整个循环 而且提高效率
          }else{
            $(this).children("b").html("");
          }
        }
      }else{
        $(this).children("b").html("");
      }
    });

    后来后台改为数量为0的时候也传进来results.list:[{"declare/check":"1","purchase/purchaseCheck":"0","purchase":"0","declare":"1"}];

    $("#side-menu ul li a[datakey]").each(function(){
      if(arr.length!=0){
        for(var i=0;i<arr.length;i++){
          var jsonnum=arr[i];
          if($.trim(jsonnum.id)== $.trim($(this).attr("datakey"))){
            jsonnum.num!=0?$(this).children("b").html(" ("+jsonnum.num+")"):$(this).children("b").html("");//此处代码修改后完美解决
          }
        }
      }else{
        $(this).children("b").html("");
      }
    });

    经过这个写法对each  和 for  break一起使用有了很好的理解 之前使用的时候经常犯迷糊。菜鸟记录。。。

  • 相关阅读:
    关于公司电脑修改host文件无法生效的问题
    Cannot access nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public) in offline mode and the artifact org.springframework
    DCL-单例模式的线程安全
    关于volatile
    关于CAS中的ABA问题存在的隐患
    无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它
    vue整合笔记
    vue9-axios、细节和杂项
    vue8-vuex、路径配置别名、promise
    vue07-路由 vue-router、keep-alive、tab-bar
  • 原文地址:https://www.cnblogs.com/wdd-cindy/p/8833451.html
Copyright © 2011-2022 走看看