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);
相關文章
相關標籤/搜索