常用js方法整理common.js

jopen 10年前發布 | 58K 次閱讀 common.js JavaScript開發

項目中常用js方法整理成了common.js

    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_:\@&?=+,.!\/~%\$]*)?)$/i  
    if (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);  
}  </pre>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!