js常用方法

var Util = function() {

        
    if (jQuery) {
        $.ajaxSetup({
            complete : function(XHR, TS) {
                filterAjaxError(XHR, TS);
            }
        });
    }

    /**
     * 拦截ajax错误请求的信息
     * @returns
     */
    function filterAjaxError(XHR, TS) {
        
        if (XHR.responseJSON && XHR.responseJSON.err == 202) {
            window.location.href = CONSTANT.LOGINURL;
        }
        
    }

    /** ******************日期处理 start************************* */

    /**
     * 格式化日期
     *
     * @param value
     * @returns {String}
     */
    function dateForamtToString(value, format) {
        if (!value) {
            return "";
        }
        return dateFormat(new Date(value), format);
    }

    /**
     * 对Date的扩展,将 Date 转化为指定格式的String 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
     * 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
     */
    function dateFormat(date, format) {
        var o = {
            "M+" : date.getMonth() + 1,
            "d+" : date.getDate(),
            "h+" : date.getHours(),
            "m+" : date.getMinutes(),
            "s+" : date.getSeconds(),
            "q+" : Math.floor((date.getMonth() + 3) / 3), // quarter
            "S" : date.getMilliseconds()
        };

        format = ((format) ? format : "yyyy-MM-dd");

        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;
    };

    /**
     * 将日期字符串转换为long
     * @param value 日期字符串
     * @returns 时间戳
     */
    function dateForamtToLong(value){

        if(value){
            return new Date(value.replace(new RegExp("-", "gm"), "/")).getTime();
        }

        return 0;
    }

    /********************日期处理 end**************************/

    /**
     * 判断是否为空对象
     */
    function isEmptyObject(obj) {
        for ( var n in obj) {
            return false
        }
        return true;
    }

    /**
     * 统计对象属性个数
     */
    function countObjectProperty(obj) {

        var count = 0;

        for ( var n in obj) {
            count++;
        }
        return count;
    }

    /**
     * 将数字金额进行千位分隔
     * @param {Object} number
     * @param params {precision 小数位,默认取2位小数,formatStr数字为0或空时用指定字符串代替显示,默认'--',params.negColor负数的颜色,默认#D9532C}
     */
    function formatNumber(number, params){

        // 判断是否为0,是0则用--代替
        if(isNaN(number) || number == "" || number == 0){
            if(params && params.formatStr){
                return dealwithEmptyContent(number, params.formatStr);
            }
            return dealwithEmptyContent(number);
        }

        // sign表示是否是正负,正数true,负数false
        var sign = true;
        if (number < 0) {
            sign = false;
            number = Math.abs(number);
        }

        // 判断是否有小数位参数,有取参数值,没有默认显示两位精度
        if(params && params.precision != undefined){
            if (!isNaN(params.precision)){
                number = new Number(number).toFixed(params.precision);
            } else {
                number = new Number(number).toFixed(2);
            }
        } else {
            number = new Number(number).toFixed(2);
        }

        number = number.toString();
        number = number.replace(/\,/g, "");
        // 取得小数点的位置
        var digit = number.indexOf(".");
        // 取得小数中的整数部分
        var intNum = number.substr(0, digit);
        var i;
        var mag = new Array();
        var word;
        // 整数时
        if (digit == -1) {
            // 整数的个数
            i = number.length;
            while (i > 0) {
                // 每隔3位截取一组数字
                word = number.substring(i, i - 3);
                i -= 3;
                // 分别将截取的数字压入数组
                mag.unshift(word);
            }
            number = mag;
        }
        else {
            // 小数时
            i = intNum.length;
            // 除小数外,整数部分的个数
            while (i > 0) {
                word = intNum.substring(i, i - 3);
                // 每隔3位截取一组数字
                i -= 3;
                mag.unshift(word);
            }
            number = mag + number.substring(digit);
        }
        // 判断是否是负数,负数加红
        if(!sign){
            // 负数的颜色
            if(params && (params.negColor || params.negColor == '')){
                return '<span style="color: ' + params.negColor + ';">-' + number + '</span>';
            }
            return '<span style="color: #D9532C;">-' + number + '</span>';
        }

        return number;
    }

    /**
     * 将空字符串或数字及0用指定字符代替
     * @param {Object} value当前值
     * @param {Object} formatStr 需要代替的字符串
     */
    function dealwithEmptyContent(value, formatStr) {

        if (!value) {
            if (formatStr) {
                return formatStr;
            }
            return '-';
        }

        return value;
    }

    /**
     * 获取ajax请求失败的信息
     * @returns
     */
    function getAjaxErrorResponseContent(XMLHttpRequest, textStatus, errorThrown) {

        var ajaxErrorContent = "";

        if (XMLHttpRequest.status == "200") {
            if (XMLHttpRequest.responseText == "") {
                ajaxErrorContent = "服务器无响应! 请联系管理员";
            } else {
                window.location.reload();
            }
        } else if (XMLHttpRequest.status == "403") {
            ajaxErrorContent = "操作权限不足!";
        } else if (XMLHttpRequest.status == "404") {
            ajaxErrorContent = "请求路径不存在!";
        } else if (XMLHttpRequest.status == "405") {
            ajaxErrorContent = "请求路径错误!";
        } else if (XMLHttpRequest.status == "500") {
            ajaxErrorContent = "服务器内部错误! 请联系管理员";
        } else if (XMLHttpRequest.status == "0") {
            ajaxErrorContent = "服务器无响应! 请联系管理员";
        } else {
            ajaxErrorContent = textStatus;
        }

        return ajaxErrorContent;
    }

    /**
     * 获取页面路径参数值
     */
    function getParams(key) {

        var result = {};
        var paramStr = encodeURI(window.document.location.search);
        if (paramStr) {
            paramStr = paramStr.substring(1);
            var params = paramStr.split('&');
            for (var p = 0; p < params.length; p++) {
                result[params[p].split('=')[0]] = unescape(params[p].split('=')[1]);
            }
        }
        return result[key];
    }
    
    /**
     * 获取页面地址参数
     * @returns
     */
    function getUrlParams() {
        
        var result = {};
        var paramStr = encodeURI(window.document.location.search);
        if (paramStr) {
            paramStr = paramStr.substring(1);
            var params = paramStr.split('&');
            for (var p = 0; p < params.length; p++) {
                result[params[p].split('=')[0]] = unescape(params[p].split('=')[1]);
            }
        }
        return result;
    }


    /**
     * 返回字符串的字节数
     * @param {Object} str 字符串
     */
    function getBytesLength(str) {
        // 在GBK编码里,除了ASCII字符,其它都占两个字符宽
        return str.replace(/[^\x00-\xff]/g, 'xx').length;
    }

    /**
     * 截取字节长度,一个汉字两个字节,后面以 .... 显示
     * @param {Object} value 当前字符串
     * @param {Object} len
     */
    function omittedLongString(str, len) {

        //字符串字节的长度
        var length = getBytesLength(str);

        if (length > (len + 4)) {
            // 判断是否全部中文
            if (length == 2 * (str.length)) {
                len = len / 2;
            }
            str = str.substr(0, len) + "...";
        }

        return str;
    }
    
    /**
     * 处理空字符串
     * @param {String} 字符串
     */
    function dealNullStr(str) {
        
        if (str == undefined || str.toString().toLocaleLowerCase() == 'null') {
            return '';
        }
        return str;
    }

    return {

        /**
         * 将数字金额进行千位分隔
         *  @param {Object} number
         * @param params {precision 小数位,默认取2位小数,formatStr数字为0或空时用指定字符串代替显示,默认'--',params.negColor负数的颜色,默认#D9532C}
         */
        formatNumber : function(number, params){
            return formatNumber(number, params);
        },

        /**
         * 格式化日期
         *
         * @param value
         * @returns {String}
         */
        dateForamtToString : function(value, format) {
            return dateForamtToString(value, format);
        },

        /**
         * 将日期字符串转换为long
         * @param value 日期字符串
         * @returns 时间戳
         */
        dateForamtToLong : function(value) {
            return dateForamtToLong(value);
        },

        getAjaxErrorResponseContent : function(XMLHttpRequest, textStatus, errorThrown) {
            return getAjaxErrorResponseContent(XMLHttpRequest, textStatus, errorThrown);
        },
        
        /**
         * 判断是否为空对象
         */
        isEmptyObject : function(obj) {
            return isEmptyObject(obj);
        },
        
        /**
         * 统计对象属性个数
         */
        countObjectProperty : function(obj) {
            return countObjectProperty(obj);
        },
        
        /**
         * 获取页面路径参数值
         */
        getParams : function(key) {
            return getParams(key);
        },
        
        /**
         * 获取页面路径参数值
         */
        getUrlParams : function() {
            return getUrlParams();
        },

        /**
        * 截取字节长度,一个汉字两个字节,后面以 .... 显示
        * @param {Object} value 当前字符串
        * @param {Object} len
        */
        omittedLongString : function(str, len) {
            return omittedLongString(str, len);
        },
        
        dealNullStr : function(str) {
            return dealNullStr(str);
        },

    };

}();

 

posted @ 2019-03-08 14:33  风行傲天  阅读(202)  评论(0编辑  收藏  举报