js中一些共同类小工具方法整理common共同引用:
var h = {};h.get = function (url, data, ok, error) {$.ajax({url: url,data: data,dataType: ‘json’,success: ok,error: error});}h.post = function (url, data, ok, error) {$.ajax({url: url,data: data,type: ‘post’,dataType: ‘json’,success: ok,error: error});}
//获取url参数
h.url = function (url) {if (!url) {url = location.search.substring(1);} else {url = url.substr(url.indexOf(‘?’) + 1);}var args = new Object(); // 声明并初始化一个 “类”// 获得地址(URL)”?”后面的字符串.var query = decodeURI(url);var pairs = query.split(“&”); // 分割URL(别忘了’&’是用来连接下一个参数)for (var i = 0; i < pairs.length; i++) {var pos = pairs[i].indexOf(‘=’);if (pos == –1) continue; // 它在找有等号的 数组[i]var argname = pairs[i].substring(0, pos); // 参数名字var value = pairs[i].substring(pos + 1); // 参数值// 以键值对的形式存放到”args”对象中args[argname] = decodeURI(value);}return args;}
// 返回字符串的实际长度, 一个汉字算2个长度
String.prototype.strlen = function () {return this.replace(/[^\x00-\xff]/g, “**”).length;}
//字符串超出省略
String.prototype.cutstr = function (len) {var restr = this;var wlength = this.replace(/[^\x00-\xff]/g, “**”).length;if (wlength > len) {for (var k = len / 2; k < this.length; k++) {if (this.substr(0, k).replace(/[^\x00-\xff]/g, “**”).length >= len) {restr = this.substr(0, k) + “…”;break;}}}return restr;}
//替换全部
String.prototype.replaceAll = function (s1, s2) {return this.replace(new RegExp(s1, “gm”), s2)}
//字符串去空格
String.prototype.trim = function () {return this.replace(/(^\s*)|(\s*$)/g, “”);}String.prototype.trimAll = function () {return this.replace(/\s+/g, “”);}String.prototype.lTrim = function () {return this.replace(/(^\s*)/g, “”);}String.prototype.rTrim = function () {return this.replace(/(\s*$)/g, “”);}
//判断是否以某个字符串开头
String.prototype.startWith = function (s) {return this.indexOf(s) == 0}
//判断是否以某个字符串结束
String.prototype.endWith = function (s) {var d = this.length – s.length;return (d >= 0 && this.lastIndexOf(s) == d)}
//删除数组中存在重复的元素
function getUnique(someArray) {tempArray = someArray.slice(0); //复制数组到临时数组for (var i = 0; i < tempArray.length; i++) {for (var j = i + 1; j < tempArray.length😉 {if (tempArray[j] == tempArray[i])//后面的元素若和待比较的相同,则删除并计数;//删除后,后面的元素会自动提前,所以指针j不移动{tempArray.splice(j, 1);}else {j++;}//不同,则指针移动}}return tempArray;}
//判断数组中是否存在重复的元素
function confirmRepeat(someArray) {tempArray = someArray.slice(0); //复制数组到临时数组for (var i = 0; i < tempArray.length; i++) {for (var j = i + 1; j < tempArray.length😉 {if (tempArray[j] == tempArray[i])//后面的元素若和待比较的相同,则删除并计数;//删除后,后面的元素会自动提前,所以指针j不移动{return true;}else {j++;}//不同,则指针移动}}return false;}
//判断某个值是否在数组中
Array.prototype.in_array = function (e) {for (i = 0; i < this.length; i++) {if (this[i] == e)return true;}return false;}//判断某个值在数组中的位置Array.prototype.indexOf = function (e) {for (i = 0; i < this.length; i++) {if (this[i] == e)return i;}return –1;}
//转义html标签
function HtmlEncode(text) {return text.replace(/&/g, ‘&’).replace(/\”/g, ‘”‘).replace(/</g, ‘<‘).replace(/>/g, ‘>’)}
//格式化日期 DateFormat(‘yyyy_MM_dd hh:mm:ss:SS 星期w 第q季度’)
function DateFormat(format, date) {if (!date) {date = new Date();}var Week = [‘日’, ‘一’, ‘二’, ‘三’, ‘四’, ‘五’, ‘六’];var o = {“y+”: date.getYear(), //year“M+”: date.getMonth() + 1, //month“d+”: date.getDate(), //day“h+”: date.getHours(), //hour“H+”: date.getHours(), //hour“m+”: date.getMinutes(), //minute“s+”: date.getSeconds(), //second“q+”: Math.floor((date.getMonth() + 3) / 3), //quarter“S”: date.getMilliseconds(), //millisecond“w”: Week[date.getDay()]}if (/(y+)/.test(format)) {format = format.replace(RegExp.$1, (date.getFullYear() + “”).substr(4 – RegExp.$1.length));}for (var k in o) {if (new RegExp(“(“ + k + “)”).test(format)) {format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : (“00” + o[k]).substr((“” + o[k]).length));}}return format;}
//设置cookie值
function setCookie(name, value, Hours) {var d = new Date();var offset = 8;var utc = d.getTime() + (d.getTimezoneOffset() * 60000);var nd = utc + (3600000 * offset);var exp = new Date(nd);exp.setTime(exp.getTime() + Hours * 60 * 60 * 1000);document.cookie = name + “=” + escape(value) + “;path=/;expires=” + exp.toGMTString() + “;domain=360doc.com;”}
//获取cookie值
function getCookie(name) {var arr = document.cookie.match(new RegExp(“(^| )” + name + “=([^;]*)(;|$)”));if (arr != null) return unescape(arr[2]);return null}
//加入收藏夹
function AddFavorite(sURL, sTitle) {try {window.external.addFavorite(sURL, sTitle)} catch (e) {try {window.sidebar.addPanel(sTitle, sURL, “”)} catch (e) {alert(“加入收藏失败,请使用Ctrl+D进行添加”)}}}
//设为首页
function setHomepage(homeurl) {if (document.all) {document.body.style.behavior = ‘url(#default#homepage)’;document.body.setHomePage(homeurl)} else if (window.sidebar) {if (window.netscape) {try {netscape.security.PrivilegeManager.enablePrivilege(“UniversalXPConnect”)} catch (e) {alert(“该操作被浏览器拒绝,如果想启用该功能,请在地址栏内输入about:config,然后将项 signed.applets.codebase_principal_support 值该为true”);}}var prefs = Components.classes[‘@mozilla.org/preferences-service;1’].getService(Components.interfaces.nsIPrefBranch);prefs.setCharPref(‘browser.startup.homepage’, homeurl)}}
//跨浏览器绑定事件
function addEventSamp(obj, evt, fn) {if (!oTarget) { return; }if (obj.addEventListener) {obj.addEventListener(evt, fn, false);} else if (obj.attachEvent) {obj.attachEvent(‘on’ + evt, fn);} else {oTarget[“on” + sEvtType] = fn;}}
//跨浏览器删除事件
function delEvt(obj, evt, fn) {if (!obj) { return; }if (obj.addEventListener) {obj.addEventListener(evt, fn, false);} else if (oTarget.attachEvent) {obj.attachEvent(“on” + evt, fn);} else {obj[“on” + evt] = fn;}}
//判断是否移动设备访问
function isMobileUserAgent() {return (/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase()));}
//完美判断是否为网址
function IsURL(strUrl) {var regular = /^\b(((https?|ftp):\/\/)?[-a-z0-9]+(\.[-a-z0-9]+)*\.(?:com|edu|gov|int|mil|net|org|biz|info|name|museum|asia|coop|aero|[a-z][a-z]|((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d))\b(\/[-a-z0-9_:\@&?=+,.!\/~%\$]*)?)$/iif (regular.test(strUrl)) {return true;} else {return false;}}
//获取页面高度
function getPageHeight() {var g = document, a = g.body, f = g.documentElement, d = g.compatMode == “BackCompat” ? a : g.documentElement;return Math.max(f.scrollHeight, a.scrollHeight, d.clientHeight);}
//获取页面宽度
function getPageWidth() {var g = document, a = g.body, f = g.documentElement, d = g.compatMode == “BackCompat” ? a : g.documentElement;return Math.max(f.scrollWidth, a.scrollWidth, d.clientWidth);}
//获取页面可视宽度
function getPageViewWidth() {var d = document, a = d.compatMode == “BackCompat”? d.body: d.documentElement;return a.clientWidth;}
//获取页面可视高度
function getPageViewHeight() {var d = document, a = d.compatMode == “BackCompat”? d.body: d.documentElement;return a.clientHeight;}
//获取页面scrollLeft
function getPageScrollLeft() {var a = document;return a.documentElement.scrollLeft || a.body.scrollLeft;}
//获取页面scrollTop
function getPageScrollTop() {var a = document;return a.documentElement.scrollTop || a.body.scrollTop;}
//获取窗体可见范围的宽与高
function getViewSize() {var de = document.documentElement;var db = document.body;var viewW = de.clientWidth == 0 ? db.clientWidth : de.clientWidth;var viewH = de.clientHeight == 0 ? db.clientHeight : de.clientHeight;return Array(viewW, viewH);}
//随机数时间戳
function uniqueId() {var a = Math.random, b = parseInt;return Number(new Date()).toString() + b(10 * a()) + b(10 * a()) + b(10 * a());}
//获取网页被卷去的位置
function getScrollXY() {return document.body.scrollTop ? {x: document.body.scrollLeft,y: document.body.scrollTop} : {x: document.documentElement.scrollLeft,y: document.documentElement.scrollTop}}
//匹配国内电话号码(0511-4405222 或 021-87888822)
function istell(str) {var result = str.match(/\d{3}-\d{8}|\d{4}-\d{7}/);if (result == null) return false;return true;}
//匹配身份证(15位或18位)
function isidcard(str) {var result = str.match(/\d{15}|\d{18}/);if (result == null) return false;return true;}
//移动电话
function checkMobile(str) {if (!(/^1[3|5|8][0-9]\d{4,8}$/.test(str))) {return false;}return true;}
// 判断输入是否是一个由 0-9 / A-Z / a-z 组成的字符串
function isalphanumber(str) {var result = str.match(/^[a-zA-Z0-9]+$/);if (result == null) return false;return true;}
// 判断输入是否是有效的电子邮件
function isemail(str) {var result = str.match(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/);if (result == null) return false;return true;}
//金额大写转换函数 transform(‘123431233132.23’)
function transform(tranvalue) {try {var i = 1;var dw2 = new Array(“”, “万”, “亿”); //大单位var dw1 = new Array(“拾”, “佰”, “仟”); //小单位var dw = new Array(“零”, “壹”, “贰”, “叁”, “肆”, “伍”, “陆”, “柒”, “捌”, “玖”); //整数部分用//以下是小写转换成大写显示在合计大写的文本框中//分离整数与小数var source = splits(tranvalue);var num = source[0];var dig = source[1];//转换整数部分var k1 = 0; //计小单位var k2 = 0; //计大单位var sum = 0;var str = “”;var len = source[0].length; //整数的长度for (i = 1; i <= len; i++) {var n = source[0].charAt(len – i); //取得某个位数上的数字var bn = 0;if (len – i – 1 >= 0) {bn = source[0].charAt(len – i – 1); //取得某个位数前一位上的数字}sum = sum + Number(n);if (sum != 0) {str = dw[Number(n)].concat(str); //取得该数字对应的大写数字,并插入到str字符串的前面if (n == ‘0’) sum = 0;}if (len – i – 1 >= 0) { //在数字范围内if (k1 != 3) { //加小单位if (bn != 0) {str = dw1[k1].concat(str);}k1++;} else { //不加小单位,加大单位k1 = 0;var temp = str.charAt(0);if (temp == “万” || temp == “亿”) //若大单位前没有数字则舍去大单位str = str.substr(1, str.length – 1);str = dw2[k2].concat(str);sum = 0;}}if (k1 == 3) { //小单位到千则大单位进一k2++;}}
//转换小数部分
var strdig = “”;if (dig != “”) {var n = dig.charAt(0);if (n != 0) {strdig += dw[Number(n)] + “角”; //加数字}var n = dig.charAt(1);if (n != 0) {strdig += dw[Number(n)] + “分”; //加数字}}str += “元” + strdig;} catch (e) {return “0元”;}return str;}
//拆分整数与小数
function splits(tranvalue) {var value = new Array(”, ”);temp = tranvalue.split(“.”);for (var i = 0; i < temp.length; i++) {value = temp;}return value;}
//格式化数字
function number_format(number, decimals, dec_point, thousands_sep) {/** 参数说明:* number:要格式化的数字* decimals:保留几位小数* dec_point:小数点符号* thousands_sep:千分位符号* */number = (number + ”).replace(/[^0-9+-Ee.]/g, ”);var n = !isFinite(+number) ? 0 : +number,prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),sep = (typeof thousands_sep === ‘undefined’) ? ‘,’ : thousands_sep,dec = (typeof dec_point === ‘undefined’) ? ‘.’ : dec_point,s = ”,toFixedFix = function (n, prec) {var k = Math.pow(10, prec);return ” + Math.ceil(n * k) / k;};s = (prec ? toFixedFix(n, prec) : ” + Math.round(n)).split(‘.’);var re = /(-?\d+)(\d{3})/;while (re.test(s[0])) {s[0] = s[0].replace(re, “$1” + sep + “$2”);}if ((s[1] || ”).length < prec) {s[1] = s[1] || ”;s[1] += new Array(prec – s[1].length + 1).join(‘0’);}return s.join(dec);}
很不错,受教了!