最近工作需要写了一个JS类 页面统一调用API接口数据并计算显示
2011-11-21 14:39
751 查看
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 [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);
相关文章推荐
- 项目组给了我一个接口直接访问是json的数据,我怎么在得到接口中的json数据在页面显示啊!
- easynvr网页兼容调试:ie浏览器下的接口调用成功但页面无法显示实时的数据
- EasyNVR流媒体服务器网页兼容调试:ie浏览器下的接口调用成功但页面无法显示实时的数据
- EasyNVR流媒体服务器网页兼容调试:ie浏览器下的接口调用成功但页面无法显示实时的数据
- 学习用js, ajax, php做一个简单的小黄鸡页面(调用simsimi API)
- 输入一个新的网址后到完全显示页面,浏览器做了哪些工作?
- 单击DataGrid的行,使这行的数据显示在这个页面的下面,有点像winform的一个列表,下面一个明细!!!^_^^_^^_^
- 获取一个网页数据返回的编码类型是gzip,解压后,网页中包含的中文字段变成了乱码,只需要把编码更改为BIG5 ,繁体字就正常显示了!
- 一个div中许多列表,使用全局,将数据显示到页面
- ajax请求接口里的数据,然后显示在页面里
- Qt刷新机制的一些总结(Qt内部画的时候是相当于画在后台一个对象里,然后在刷新的时候调用bitblt统一画,调用window的api并不会影响到后面的那个对象)
- 当编辑和新增用同一个页面你的时候,编辑需要显示而查看不需要显示的东西
- 调用短信接口,先var_dump()看数据类型是object需要json_decode(json_encode( $resp),true)转换成array
- ASP.NET API(MVC) 对APP接口(Json格式)接收数据与返回数据的统一管理
- javascript实现一个html提交的表单数据放到另一个html页面显示
- 最近写了一个C#的银江接口 (股票数据接口)
- 请问如何在Web页面中点击一个button之后,用jsp从数据库中读取数据显示到表格里
- ajax异步调用,当鼠标点在图片上时,显示一个新层读取数据内容
- JSP页面调用接口发送JSON格式数据
- 初学移动开发技术_两个页面相互跳转,并且向上一个活动传递数据并显示