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 ...
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