• JS常用公共方法封装


                                                   _ooOoo_
                                                  o8888888o
                                                  88" . "88
                                                  (| -_- |)
                                                  O  =  /O
                                               ____/`---'\____
                                             .'  \|     |//  `.
                                            /  \|||  :  |||//  
                                           /  _||||| -:- |||||-  
                                           |   | \  -  /// |   |
                                           | \_|  ''---/''  |   |
                                             .-\__  `-`  ___/-. /
                                         ___`. .'  /--.--  `. . __
                                      ."" '<  `.___\_<|>_/___.'  >'"".
                                     | | :  `- \`.;` _ /`;.`/ - ` : | |
                                        `-.   \_ __ /__ _/   .-` /  /
                                ======`-.____`-.___\_____/___.-`____.-'======
                                                   `=---='
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    
    
    /*****************************封装一些常用的方法,有一些方法可能不够完善,后续有待优化!!*****************************/
    
    
    var Common = (function(NS, $) {
        NS['cookie'] = {
            /**
             * 设置cookie
             * @param name cookie名称
             * @param value cookie值
             * @param iDay cookie的时间
             */
            setCookie: function(name, value, iDay) {
                var oDate = new Date();
                oDate.setDate(oDate.getDate() + iDay);
                document.cookie = name + '=' + value + ';expires=' + oDate;
            },
            /**
             * 获取cookie
             * @param name cookie名称
             * @returns
             */
            getCookie: function(name) {
                var arr = document.cookie.split('; ');
                for (var i = 0; i < arr.length; i++) {
                    var arr2 = arr[i].split('=');
                    if (arr2[0] == name) {
                        return arr2[1];
                    }
                }
                return '';
            },
            /**
             * 删除cookie
             * @param name cookie名称
             */
            removeCookie: function(name) {
                setCookie(name, 1, -1);
            }
    
        };
        /**
         * 其他方法
         */
        NS['other'] = {
            /**
             * 检测密码强度
             * @param str 字符串 
             * @returns 1:密码弱 2:密码中等 3:密码强 4:密码很强
             */
            checkPwd: function(str) {
                var nowLv = 0;
                if (str.length < 6) {
                    return nowLv
                };
                if (/[0-9]/.test(str)) {
                    nowLv++
                };
                if (/[a-z]/.test(str)) {
                    nowLv++
                };
                if (/[A-Z]/.test(str)) {
                    nowLv++
                };
                if (/[.|-|_]/.test(str)) {
                    nowLv++
                };
                return nowLv;
            },
            /**
             * 获取URL参数
             * @param url 地址
             * @returns 例:getUrlPrmt("http://www.baidu.com?id=1&nam=张三&uid=12345654321&type=1,2,3"),结果{id: "1", nam: "张三", uid: "12345654321", type: "1,2,3"}
             */
            getUrlPrmt: function(url) {
                url = url ? url : window.location.href;
                let _pa = url.substring(url.indexOf('?') + 1),
                    _arrS = _pa.split('&'),
                    _rs = {};
                for (var i = 0, _len = _arrS.length; i < _len; i++) {
                    let pos = _arrS[i].indexOf('=');
                    if (pos == -1) {
                        continue;
                    }
                    let name = _arrS[i].substring(0, pos),
                        value = window.decodeURIComponent(_arrS[i].substring(pos + 1));
                    _rs[name] = value;
                }
                return _rs;
            },
            /**
             * 返回指定某个区间的一个数字(可以不传参,不传就返回0-255之间的数;可以只传一个,返回0到传入的这个数字之间的某个值)
             * @param n1 开始区间 例:5
             * @param n2 结束区间 例:10
             * @returns 返回这个区间的某个随机值
             */
            randomNumber: function(n1, n2) {
                if (arguments.length === 2) {
                    return Math.round(n1 + Math.random() * (n2 - n1));
                } else if (arguments.length === 1) {
                    return Math.round(Math.random() * n1)
                } else {
                    return Math.round(Math.random() * 255)
                }
            },
            /**
             * 随机产生某个颜色
             * @returns {String} 颜色 例:rgb(250,82,49)
             */
            randomColor: function() {
                //randomNumber是上面定义的函数
                //写法1
                return 'rgb(' + randomNumber(255) + ',' + randomNumber(255) + ',' + randomNumber(255) + ')';
    
                //写法2
                return '#' + Math.random().toString(16).substring(2).substr(0, 6);
    
                //写法3
                var color = '#';
                for (var i = 0; i < 6; i++) {
                    color += '0123456789abcdef' [randomNumber(15)];
                }
                return color;
            }
        };
        /**
         * 数组相关方法
         */
        NS['arr'] = {
            /**
             * 数组去重
             * 用的是Array的from方法
             * @param arr 数组
             * @returns 去重后的数组
             */
            removeRepeatArray: function(arr) {
                return Array.from(new Set(arr))
            },
            /**
             * 将数组乱序输出
             * @param arr 数组
             * @returns 打乱后的数组
             */
            upsetArr: function(arr) {
                return arr.sort(function() { return Math.random() - 0.5 });
            },
            /**
             * 获取数组的最大值,最小值,只针对数字类型的数组
             * @param arr 数组
             * @param type 0:最小值,1:最大值
             * @returns
             */
            compareArr: function(arr, type) {
                if (type == 1) {
                    return Math.max.apply(null, arr);
                } else {
                    return Math.min.apply(null, arr);
                }
            },
            /**
             * 得到数组的和,只针对数字类型数组
             * @param arr 数组
             * @returns {Number} 和
             */
            sumArr: function(arr) {
                var sumText = 0;
                for (var i = 0, len = arr.length; i < len; i++) {
                    sumText += arr[i];
                }
                return sumText
            },
            /**
             * 数组的平均值,只针对数字类型数组,小数点可能会有很多位,这里不做处理,处理了使用就不灵活了!
             * @param arr 数组
             * @returns {Number} 平均值
             */
            covArr: function(arr) {
                var sumText = sumArr(arr);
                var covText = sumText / arr.length;
                return covText;
            },
            /**
             * 随机获取数组中的某个元素
             * @param arr 数组
             * @returns 随机获取的值
             */
            randomOne: function(arr) {
                return arr[Math.floor(Math.random() * arr.length)];
            },
            /**
             * 返回某个元素在数组中出现的次数
             * @param arr 数组 
             * @param ele 要查找的元素
             * @returns {Number} 出现的次数
             */
            getEleCount: function(arr, ele) {
                var num = 0;
                for (var i = 0, len = arr.length; i < len; i++) {
                    if (ele == arr[i]) {
                        num++;
                    }
                }
                return num;
            },
            /**
             * 简单数组排序,针对数字数组
             * @param type 1:降序,0:升序
             */
            sortArr: function(arr, type) {
                if (type == 1) {
                    //降序
                    arr.sort(function(a, b) {
                        return b - a;
                    });
                } else {
                    arr.sort(function(a, b) {
                        return a - b;
                    });
                }
                return arr;
            },
            sortObjectArr: function(arr, type) {
                if (type == 1) {
                    arr.sort(function(a, b) {
                        if (a.age > b.age) return 1;
                        if (a.age < b.age) return -1;
                        if (a.age = b.age) return 0;
                    });
                } else {
                    arr.sort(function(a, b) {
                        if (a.age > b.age) return -1;
                        if (a.age < b.age) return 1;
                        if (a.age = b.age) return 0;
                    });
                }
                return arr;
            }
        };
        NS['time'] = {
            /**
             * 倒计时(默认开始时间为当前时间)
             * @param endTime 结束时间
             * @returns 例:剩余时间1天 16小时 45 分钟41 秒
             */
            getEndTime: function(endTime) {
                var startDate = new Date(); //开始时间,当前时间
                var endDate = new Date(endTime); //结束时间,需传入时间参数
                var t = endDate.getTime() - startDate.getTime(); //时间差的毫秒数
                var d = 0,
                    h = 0,
                    m = 0,
                    s = 0;
                if (t >= 0) {
                    d = Math.floor(t / 1000 / 3600 / 24);
                    h = Math.floor(t / 1000 / 60 / 60 % 24);
                    m = Math.floor(t / 1000 / 60 % 60);
                    s = Math.floor(t / 1000 % 60);
                }
                return "剩余时间" + d + "天 " + h + "小时 " + m + " 分钟" + s + " 秒";
            }
        };
        /*
         * 加密解密Common.base64.base64Encode(input)
         */
        NS['base64'] = {
            //base64加密函数
            base64Encode: function(input) {
                var rv = encodeURIComponent(input);
                rv = unescape(rv);
                rv = window.btoa(rv);
                return rv;
            },
            //base64解密函数
            base64Decode: function(input) {
                var rv = window.atob(input);
                rv = escape(rv);
                rv = decodeURIComponent(rv);
                return rv;
            }
        };
        /*
         * 字符串处理的公共方法
         */
        NS['str'] = {
            /**
             * 去除字符串空格 
             * @param str 要处理的字符串
             * @param type 1:所有空格 2:前后空格 3:前空格 4:后空格
             */
            strTrim: function(str, type) {
                switch (type) {
                    case 1:
                        return str.replace(/s+/g, "");
                    case 2:
                        return str.replace(/(^s*)|(s*$)/g, "");
                    case 3:
                        return str.replace(/(^s*)/g, "");
                    case 4:
                        return str.replace(/(s*$)/g, "");
                    default:
                        return str;
                }
            },
            /**
             * 字母大小写切换
             * @param str 要处理的字符串
             * @param type 1:首字母大写 2:首页母小写 3:大小写转换 4:全部大写 5:全部小写
             */
            strChangeCase: function(str, type) {
                function ToggleCase(str) {
                    var itemText = ""
                    str.split("").forEach(
                        function(item) {
                            if (/^([a-z]+)/.test(item)) {
                                itemText += item.toUpperCase();
                            } else if (/^([A-Z]+)/.test(item)) {
                                itemText += item.toLowerCase();
                            } else {
                                itemText += item;
                            }
                        });
                    return itemText;
                }
    
                switch (type) {
                    case 1:
                        return str.replace(/^(w)(w+)/, function(v, v1, v2) {
                            return v1.toUpperCase() + v2.toLowerCase();
                        });
                    case 2:
                        return str.replace(/^(w)(w+)/, function(v, v1, v2) {
                            return v1.toLowerCase() + v2.toUpperCase();
                        });
                    case 3:
                        return ToggleCase(str);
                    case 4:
                        return str.toUpperCase();
                    case 5:
                        return str.toLowerCase();
                    default:
                        return str;
                }
            },
            /**
             * 字符串替换
             * @param str 字符串
             * @param aFindText 要替换的字符
             * @param aRepText 替换成什么
             */
            replaceAll: function(str, aFindText, aRepText) {
                raRegExp = new RegExp(aFindText, "g");
                return str.replace(raRegExp, aRepText);
            },
            /**
             * 查找某个字符或字符串在另一个字符串中出现的次数
             * @param str 字符串
             * @param strSplit 要查找的字符或字符串
             * @returns {Number} 返回出现的次数
             * 例:countStr("klsdjflds","s") 返回2
             */
            countStr: function(str, strSplit) {
                return str.split(strSplit).length - 1
            }
        };
        /*
         * 价格模块
         */
        NS['price'] = {
            /*
             *@名称:  switch 切换价格
             *@参数:  float usAmount 美元价格
             *       float rate 汇率
             *@描述:  使用方法TT_GET('price').switch('价格', '汇率');
             *@返回:  float
             */
            'switch': function(usAmount, rate) {
                var _curr = NS.cookie.get("TT_CURR");
                if (_curr == "JPY") {
                    var price = Math.round((usAmount * rate * 10000 + 1) / 10000);
                } else {
                    var price = (Math.round((usAmount * rate * 1000000 + 1) / 10000) / 100).toFixed(2);
                }
                return price;
            }
        };
        /*
         * ajax 语言参数
         */
        NS['lactions'] = {
            /*
             *@名称:  getId 获取语言ID
             *@参数:  string code 语言代码
             *@描述:  使用方法TT_NS.lactions.lang();
             *@返回:  float
             */
            'lang': function() {
                var locations = window.location.href;
                var lang = //es/|/ru/|/de/|/fr/|/it/|/ar/|/pl/|/jp/|/pt/|/en//;
                lang = lang.test(locations);
                if (lang == true) {
                    lang = locations.split("/");
                    return '&lang=' + lang[3];
                } else {
                    return '';
                }
            },
            /*
             *@名称:  getId 获取语言ID
             *@参数:  string code 语言代码
             *@描述:  使用方法TT_NS.lactions.langShort();
             *@返回:  float
             */
            'langShort': function() {
                var locations = window.location.href;
                var lang = //es/|/ru/|/de/|/fr/|/it/|/ar/|/pl/|/jp/|/pt/|/en//;
                lang = lang.test(locations);
                if (lang == true) {
                    lang = locations.split("/");
                    return lang[3];
                } else {
                    return '';
                }
            }
        };
        NS['AD_TOP'] = {
            /**
             * @functionName: 底部提示框
             * @param:        无
             * @description:  底部广告条,当用户点击关闭按钮的时候,记录cookie值,关掉之后不再显示,cookie的有效时间为一天。
             * @return:       无
             */
            'adCookie': '',
            'init': function() {
                var _this = this;
                _this.showTopAD("#close_topad");
                _this.closeTopAd();
            },
            'setCookie': function(name, value, day) {
                var _day = day || 7;
                var oDate = new Date();
                oDate.setDate(oDate.getDate() + _day);
                document.cookie = name + '=' + value + '; expires =' + oDate;
            },
            'closeTopAd': function() {
                var _this = this;
                $("#close_topad").click(function() {
                    _this.adCookie = $(this).parent().find("img").attr('alt');
                    _this.setCookie('topAD', _this.adCookie, 1);
                    $(this).parent().hide();
                })
            },
            'showTopAD': function(obj) {
                var _this = this;
                _this.adCookie = $(obj).parent().find("img").attr('alt');
                var ckTopAd = NS['cookie'].get('topAD');
                if (ckTopAd == _this.adCookie) {
                    $(obj).parent().hide();
                } else {
                    $(obj).parent().show();
                }
            }
        };
        //检查email
        NS['check'] = {
            'email': function(email) {
                var reg = /^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/;
                var isok = reg.test(email);
                if (!isok) {
                    return false;
                } else {
                    return true;
                }
            }
        };
    
        return NS;
    })(window.Common || {}, jQuery);
  • 相关阅读:
    实现免费WiFi无线共享
    详解spring配置文件
    P1886 滑动窗口 /【模板】单调队列
    P3370 【模板】字符串哈希
    P3371 【模板】单源最短路径(弱化版)
    P3367 【模板】并查集
    P1177 【模板】快速排序
    P3382 【模板】三分法
    P3374 【模板】树状数组 1
    P1226 【模板】快速幂||取余运算
  • 原文地址:https://www.cnblogs.com/wpshan/p/9135565.html
Copyright © 2020-2023  润新知