您的位置:首页 > Web前端 > JavaScript

最近工作需要写了一个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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐