JS之公共方法(通讯、正则、乘法)

1 通讯

/*
通讯-Ajax通讯基础方法
Atype:"GET"或"POST"。
AAsync:true-异步,false-同步。
AUrl:请求的url。
AData:通讯数据。
Afun:回调方法。
*/
function commBase(AType,AAsync,AUrl,AData, Afun) {
    $.ajax({
        type: AType,
        async: AAsync,
        contentType: "application/json",
        url: AUrl,
        data: { "param": AData, "rn": Math.random() },
        dataType: 'json',
        beforeSend: function () { },
        success: Afun,
        error: function (xhr, textStatus, errorThrown) { 
        //alert("返回值:"+xhr.responseText +"状态码:" + xhr.readyState+"status:"+xhr.status+"textStatus:"+textStatus); 
        }
    });
}

/*
通讯-异步-GET
*/
function commAsyncGet(AData, Afun) {
	var AType="GET";
	var AAsync="true";
	var AUrl = "/Handler.ashx";
	commBase(AType, AAsync, AUrl, AData, Afun);
}

/*
通讯-异步-POST
*/
function commAsyncPost(AData, Afun) {
    var AType = "POST";
	var AAsync="true";
	var AUrl = "/Handler.ashx";
	commBase(AType, AAsync, AUrl, AData, Afun);
}

/*
通讯-同步-GET
*/
function commSyncGet(AData, Afun) {
    var AType = "GET";
	var AAsync="false";
	var AUrl="/Handler.ashx";
	commBase(AType, AAsync, AUrl, AData, Afun);
}

/*
通讯-同步-POST
*/
function commSyncPost(AData, Afun) {
    var AType = "POST";
	var AAsync=false;
	var AUrl = "/Handler.ashx";
	commBase(AType, AAsync, AUrl, AData, Afun);
}



2 正则表达式

//获取innerhtml的标签中所有包含的代码
function innerhtmlToInnerText(myText) {
    var re = ">\\S*<";
    var result = myText.match(re);
    var ii = result.toString().length - 1;
    result = result.toString().substring(1, ii);
    return result;
}
由于火狐浏览器不支持innerText属性,不建议在页面使用innerText,因为这样会导致兼性问题。
在确实想使用innerText时可以使用innerHTML代替。
innerText与innerHTML区别
<div >123<div>
innerText:获取标签 的全部内容,如 :123
innerHTML:获取标签的全部内容,如 :<div >123<div>
所以在改为使用innerHTML时,加上面JS代码进行筛选,得到的效果就和innerText一致了。

3 乘法

在JS中,浮点数相乘一般会得到一个不准确的结果。如

原因
有些小数以二进制表示位数是无穷的:
十进制           二进制
0.1              0.0001 1001 1001 1001 ...
0.2              0.0011 0011 0011 0011 ...
0.3              0.0100 1100 1100 1100 ...
0.4              0.0110 0110 0110 0110 ...
0.5              0.1
0.6              0.1001 1001 1001 1001 ...
所以程序无法真正表示1.1,只能做到一定程度上的准确。
即1.09999999999999999
十进制转二进制:
整数部分除以2,小数部分乘以2。
解决
该类问题都是将其浮点数转换为整数,进行运算。
function accMul(arg1, arg2) {
            var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
            try {m += s1.split(".")[1].length} catch (e) { }//s1小数位数
            try { m += s2.split(".")[1].length } catch (e) { } //s2小数位数
            return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)//Math.pow(x,y)x的y次幂
        }
该部分信息参考:http://www.jb51.net/article/48469.htm



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值