最近工作需要写了一个JS类 页面统一调用API接口数据并计算显示

formatNumber 格式化数字的函数 我原本封装在我公用object里了  单独写出来  有需要的自己改一下吧


function formatNumber  (num,pattern) {//JS自动格式化输入的数字/千位分隔符
          var strarr = num?num.toString().split('.'):['0'];  
          var fmtarr = pattern?pattern.split('.'):[''];  
          var retstr='';  
          
          // 整数部分  
          var str = strarr[0];  
          var fmt = fmtarr[0];  
          var i = str.length-1;    
          var comma = false;  
          for(var f=fmt.length-1;f>=0;f--){  
            switch(fmt.substr(f,1)){  
              case '#':  
                if(i>=0 ) retstr = str.substr(i--,1) + retstr;  
                break;  
              case '0':  
                if(i>=0) retstr = str.substr(i--,1) + retstr;  
                else retstr = '0' + retstr;  
                break;  
              case ',':  
                comma = true;  
                retstr=','+retstr;  
                break;  
            }  
          }  
          if(i>=0){  
            if(comma){  
              var l = str.length;  
              for(;i>=0;i--){  
                retstr = str.substr(i,1) + retstr;  
                if(i>0 && ((l-i)%3)==0) retstr = ',' + retstr;   
              }  
            }  
            else retstr = str.substr(0,i+1) + retstr;  
          }  
          
          retstr = retstr+'.';  
          // 处理小数部分  
          str=strarr.length>1?strarr[1]:'';  
          fmt=fmtarr.length>1?fmtarr[1]:'';  
          i=0;  
          for(var f=0;f<fmt.length;f++){  
            switch(fmt.substr(f,1)){  
              case '#':  
                if(i<str.length) retstr+=str.substr(i++,1);  
                break;  
              case '0':  
                if(i<str.length) retstr+= str.substr(i++,1);  
                else retstr+='0';  
                break;  
            }  
          }  
          return retstr.replace(/^,+/,'').replace(/\.$/,'');  
 
    
    }


 //以上是  下面类中要用到的一个函数

/**
 * 调用统计数据 字段_类型_调用数据ID_页面ID名称
 *  <div rel="stattmp" data="view_0_574_play2" id="play2">0</div>
 *  <div rel="stattmp" data="view_1_41_play3" id="play3">0</div>
 * */
var bale = new Object(); //声明 芭乐命名空间


bale._statapi = function () {
    var getInfo = '',
        splitArr = '',
        apiData = '',
        statPostCalback = null;




    //ajax post回调函数
    statPostCalback = function (res) {
        var _res = $.parseJSON(res), u = [], d = [];
        for(var n in _res) {
             u = n.split("_");
            d = stattmp[u[1]];


            $("." + d[3]).html(bale.otherFun.formatNumber(_res[n][d[0]], "##,###"));
        }
    }
    //api 获取数据
    apiData = function (data) {
        //type 拆分
        var type1 = [], type0 = [], sp = [], dataid = [];
            stattmp = [];//全局变量
        for(var i=0, max = data.length;i < max; i++) {


            sp = data[i];
            switch (sp[1]) {
                case '1':
                    type1.push(sp[2]);
                    break;
                case '0':
                    type0.push(sp[2]);
                    break;
            }


            stattmp[sp[2]] = sp;


        }




        if (type1 != '') {
            for(var i=0, max = type1.length; i<max; i++) {
                dataid[i] = type1[i].split("_")[0];
            }


            $.post("/api.php?op=statindex&action=getstat", {"arrid": dataid.join(","), "type":1}, statPostCalback);
        }


        if (type0 != '') {
           for(var i=0, max = type0.length; i<max; i++) {
                dataid[i] = type0[i].split("_")[0];
            }


            $.post("/api.php?op=statindex&action=getstat", {"arrid": dataid.join(","), "type":0}, statPostCalback);
        }
    }
    //拼接数组
    splitArr = function (that) {
        var res = [], newres = [], newid = [];//原数据


        //数据重组用ID 做键
        for(var i=0, max = that.dataarr.length; i<max; i++) {
            res[i] = that.dataarr[i];
        }
        apiData(res)
    }
    //获取信息
    getInfo = function (that) {
        splitArr(that);


    }
    return {
        "init": function () {
            var _this   = $("[rel=stattmp]"),
                _dataarr= [],
                _idarr  = [],
                i=0;


            for(i=0, max=_this.length; i < max; i++) {
                _dataarr[i] = _this.eq(i).attr('data').split("_");
            }


            this.dataarr = _dataarr;
        },
        "getinfo": function () {
            getInfo(this);
        }
    }
}(jQuery);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值