• 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一起使用有了很好的理解 之前使用的时候经常犯迷糊。菜鸟记录。。。

  • 相关阅读:
    网络编程[28]
    网络编程[30]
    网络编程[20]
    网络编程[29]
    网络编程[19]
    网络编程[15]
    网络编程[12]
    hdu 3802【Ipad,IPhone】
    hdu 2616【Kill the monster】
    hdu 1026【Ignatius and the Princess I】
  • 原文地址:https://www.cnblogs.com/wdd-cindy/p/8833451.html
Copyright © 2020-2023  润新知