JavaScript常用工具方法封裝(2)

JavaScript

4. String 字符串操作

/**

* 去除空格

* @param? {str}

* @param? {type}

*? ? ? type:? 1-所有空格? 2-前后空格? 3-前空格 4-后空格

* @return {String}

*/

trim (str, type) {

? ? type = type || 1

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

*? ? ? type:? 1:首字母大寫? 2:首頁母小寫? 3:大小寫轉(zhuǎn)換? 4:全部大寫? 5:全部小寫

* @return {String}

*/

changeCase (str, type) {

? ? type = type || 4

? ? switch (type) {

? ? ? ? case 1:

? ? ? ? ? ? return str.replace(/\b\w+\b/g, function (word) {

? ? ? ? ? ? ? ? return word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase();

? ? ? ? ? ? });

? ? ? ? case 2:

? ? ? ? ? ? return str.replace(/\b\w+\b/g, function (word) {

? ? ? ? ? ? ? ? return word.substring(0, 1).toLowerCase() + word.substring(1).toUpperCase();

? ? ? ? ? ? });

? ? ? ? case 3:

? ? ? ? ? ? return str.split('').map( function(word){

? ? ? ? ? ? ? ? if (/[a-z]/.test(word)) {

? ? ? ? ? ? ? ? ? ? return word.toUpperCase();

? ? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? ? return word.toLowerCase()

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }).join('')

? ? ? ? case 4:

? ? ? ? ? ? return str.toUpperCase();

? ? ? ? case 5:

? ? ? ? ? ? return str.toLowerCase();

? ? ? ? default:

? ? ? ? ? ? return str;

? ? }

}

/*

? ? 檢測密碼強(qiáng)度

*/

checkPwd (str) {

? ? var Lv = 0;

? ? if (str.length < 6) {

? ? ? ? return Lv

? ? }

? ? if (/[0-9]/.test(str)) {

? ? ? ? Lv++

? ? }

? ? if (/[a-z]/.test(str)) {

? ? ? ? Lv++

? ? }

? ? if (/[A-Z]/.test(str)) {

? ? ? ? Lv++

? ? }

? ? if (/[\.|-|_]/.test(str)) {

? ? ? ? Lv++

? ? }

? ? return Lv;

}

/*過濾html代碼(把<>轉(zhuǎn)換)*/

filterTag (str) {

? ? str = str.replace(/&/ig, "&amp;");

? ? str = str.replace(/</ig, "&lt;");

? ? str = str.replace(/>/ig, "&gt;");

? ? str = str.replace(" ", " ");

? ? return str;

}

5. Number

/*隨機(jī)數(shù)范圍*/

random (min, max) {

? ? if (arguments.length === 2) {

? ? ? ? return Math.floor(min + Math.random() * ( (max+1) - min ))

? ? }else{

? ? ? ? return null;

? ? }

}

/*將阿拉伯?dāng)?shù)字翻譯成中文的大寫數(shù)字*/

numberToChinese (num) {

? ? var AA = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十");

? ? var BB = new Array("", "十", "百", "仟", "萬", "億", "點", "");

? ? var a = ("" + num).replace(/(^0*)/g, "").split("."),

? ? ? ? k = 0,

? ? ? ? re = "";

? ? for(var i = a[0].length - 1; i >= 0; i--) {

? ? ? ? switch(k) {

? ? ? ? ? ? case 0:

? ? ? ? ? ? ? ? re = BB[7] + re;

? ? ? ? ? ? ? ? break;

? ? ? ? ? ? case 4:

? ? ? ? ? ? ? ? if(!new RegExp("0{4}//d{" + (a[0].length - i - 1) + "}$")

? ? ? ? ? ? ? ? ? ? .test(a[0]))

? ? ? ? ? ? ? ? ? ? re = BB[4] + re;

? ? ? ? ? ? ? ? break;

? ? ? ? ? ? case 8:

? ? ? ? ? ? ? ? re = BB[5] + re;

? ? ? ? ? ? ? ? BB[7] = BB[5];

? ? ? ? ? ? ? ? k = 0;

? ? ? ? ? ? ? ? break;

? ? ? ? }

? ? ? ? if(k % 4 == 2 && a[0].charAt(i + 2) != 0 && a[0].charAt(i + 1) == 0)

? ? ? ? ? ? re = AA[0] + re;

? ? ? ? if(a[0].charAt(i) != 0)

? ? ? ? ? ? re = AA[a[0].charAt(i)] + BB[k % 4] + re;

? ? ? ? k++;

? ? }

? ? if(a.length > 1) // 加上小數(shù)部分(如果有小數(shù)部分)

? ? {

? ? ? ? re += BB[6];

? ? ? ? for(var i = 0; i < a[1].length; i++)

? ? ? ? ? ? re += AA[a[1].charAt(i)];

? ? }

? ? if(re == '一十')

? ? ? ? re = "十";

? ? if(re.match(/^一/) && re.length == 3)

? ? ? ? re = re.replace("一", "");

? ? return re;

}

/*將數(shù)字轉(zhuǎn)換為大寫金額*/

changeToChinese (Num) {

? ? ? ? //判斷如果傳遞進(jìn)來的不是字符的話轉(zhuǎn)換為字符

? ? ? ? if(typeof Num == "number") {

? ? ? ? ? ? Num = new String(Num);

? ? ? ? };

? ? ? ? Num = Num.replace(/,/g, "") //替換tomoney()中的“,”

? ? ? ? Num = Num.replace(/ /g, "") //替換tomoney()中的空格

? ? ? ? Num = Num.replace(/¥/g, "") //替換掉可能出現(xiàn)的¥字符

? ? ? ? if(isNaN(Num)) { //驗證輸入的字符是否為數(shù)字

? ? ? ? ? ? //alert("請檢查小寫金額是否正確");

? ? ? ? ? ? return "";

? ? ? ? };

? ? ? ? //字符處理完畢后開始轉(zhuǎn)換,采用前后兩部分分別轉(zhuǎn)換

? ? ? ? var part = String(Num).split(".");

? ? ? ? var newchar = "";

? ? ? ? //小數(shù)點前進(jìn)行轉(zhuǎn)化

? ? ? ? for(var i = part[0].length - 1; i >= 0; i--) {

? ? ? ? ? ? if(part[0].length > 10) {

? ? ? ? ? ? ? ? return "";

? ? ? ? ? ? ? ? //若數(shù)量超過拾億單位,提示

? ? ? ? ? ? }

? ? ? ? ? ? var tmpnewchar = ""

? ? ? ? ? ? var perchar = part[0].charAt(i);

? ? ? ? ? ? switch(perchar) {

? ? ? ? ? ? ? ? case "0":

? ? ? ? ? ? ? ? ? ? tmpnewchar = "零" + tmpnewchar;

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case "1":

? ? ? ? ? ? ? ? ? ? tmpnewchar = "壹" + tmpnewchar;

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case "2":

? ? ? ? ? ? ? ? ? ? tmpnewchar = "貳" + tmpnewchar;

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case "3":

? ? ? ? ? ? ? ? ? ? tmpnewchar = "叁" + tmpnewchar;

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case "4":

? ? ? ? ? ? ? ? ? ? tmpnewchar = "肆" + tmpnewchar;

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case "5":

? ? ? ? ? ? ? ? ? ? tmpnewchar = "伍" + tmpnewchar;

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case "6":

? ? ? ? ? ? ? ? ? ? tmpnewchar = "陸" + tmpnewchar;

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case "7":

? ? ? ? ? ? ? ? ? ? tmpnewchar = "柒" + tmpnewchar;

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case "8":

? ? ? ? ? ? ? ? ? ? tmpnewchar = "捌" + tmpnewchar;

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case "9":

? ? ? ? ? ? ? ? ? ? tmpnewchar = "玖" + tmpnewchar;

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? }

? ? ? ? ? ? switch(part[0].length - i - 1) {

? ? ? ? ? ? ? ? case 0:

? ? ? ? ? ? ? ? ? ? tmpnewchar = tmpnewchar + "元";

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case 1:

? ? ? ? ? ? ? ? ? ? if(perchar != 0) tmpnewchar = tmpnewchar + "拾";

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case 2:

? ? ? ? ? ? ? ? ? ? if(perchar != 0) tmpnewchar = tmpnewchar + "佰";

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case 3:

? ? ? ? ? ? ? ? ? ? if(perchar != 0) tmpnewchar = tmpnewchar + "仟";

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case 4:

? ? ? ? ? ? ? ? ? ? tmpnewchar = tmpnewchar + "萬";

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case 5:

? ? ? ? ? ? ? ? ? ? if(perchar != 0) tmpnewchar = tmpnewchar + "拾";

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case 6:

? ? ? ? ? ? ? ? ? ? if(perchar != 0) tmpnewchar = tmpnewchar + "佰";

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case 7:

? ? ? ? ? ? ? ? ? ? if(perchar != 0) tmpnewchar = tmpnewchar + "仟";

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case 8:

? ? ? ? ? ? ? ? ? ? tmpnewchar = tmpnewchar + "億";

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case 9:

? ? ? ? ? ? ? ? ? ? tmpnewchar = tmpnewchar + "拾";

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? }

? ? ? ? ? ? var newchar = tmpnewchar + newchar;

? ? ? ? }

? ? ? ? //小數(shù)點之后進(jìn)行轉(zhuǎn)化

? ? ? ? if(Num.indexOf(".") != -1) {

? ? ? ? ? ? if(part[1].length > 2) {

? ? ? ? ? ? ? ? // alert("小數(shù)點之后只能保留兩位,系統(tǒng)將自動截斷");

? ? ? ? ? ? ? ? part[1] = part[1].substr(0, 2)

? ? ? ? ? ? }

? ? ? ? ? ? for(i = 0; i < part[1].length; i++) {

? ? ? ? ? ? ? ? tmpnewchar = ""

? ? ? ? ? ? ? ? perchar = part[1].charAt(i)

? ? ? ? ? ? ? ? switch(perchar) {

? ? ? ? ? ? ? ? ? ? case "0":

? ? ? ? ? ? ? ? ? ? ? ? tmpnewchar = "零" + tmpnewchar;

? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? case "1":

? ? ? ? ? ? ? ? ? ? ? ? tmpnewchar = "壹" + tmpnewchar;

? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? case "2":

? ? ? ? ? ? ? ? ? ? ? ? tmpnewchar = "貳" + tmpnewchar;

? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? case "3":

? ? ? ? ? ? ? ? ? ? ? ? tmpnewchar = "叁" + tmpnewchar;

? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? case "4":

? ? ? ? ? ? ? ? ? ? ? ? tmpnewchar = "肆" + tmpnewchar;

? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? case "5":

? ? ? ? ? ? ? ? ? ? ? ? tmpnewchar = "伍" + tmpnewchar;

? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? case "6":

? ? ? ? ? ? ? ? ? ? ? ? tmpnewchar = "陸" + tmpnewchar;

? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? case "7":

? ? ? ? ? ? ? ? ? ? ? ? tmpnewchar = "柒" + tmpnewchar;

? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? case "8":

? ? ? ? ? ? ? ? ? ? ? ? tmpnewchar = "捌" + tmpnewchar;

? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? case "9":

? ? ? ? ? ? ? ? ? ? ? ? tmpnewchar = "玖" + tmpnewchar;

? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? if(i == 0) tmpnewchar = tmpnewchar + "角";

? ? ? ? ? ? ? ? if(i == 1) tmpnewchar = tmpnewchar + "分";

? ? ? ? ? ? ? ? newchar = newchar + tmpnewchar;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? //替換所有無用漢字

? ? ? ? while(newchar.search("零零") != -1)

? ? ? ? ? ? newchar = newchar.replace("零零", "零");

? ? ? ? newchar = newchar.replace("零億", "億");

? ? ? ? newchar = newchar.replace("億萬", "億");

? ? ? ? newchar = newchar.replace("零萬", "萬");

? ? ? ? newchar = newchar.replace("零元", "元");

? ? ? ? newchar = newchar.replace("零角", "");

? ? ? ? newchar = newchar.replace("零分", "");

? ? ? ? if(newchar.charAt(newchar.length - 1) == "元") {

? ? ? ? ? ? newchar = newchar + "整"

? ? ? ? }

? ? ? ? return newchar;

? ? }

6. Http

/**

* @param? {setting}

*/

ajax(setting){

? ? //設(shè)置參數(shù)的初始值

? ? var opts={

? ? ? ? method: (setting.method || "GET").toUpperCase(), //請求方式

? ? ? ? url: setting.url || "", // 請求地址

? ? ? ? async: setting.async || true, // 是否異步

? ? ? ? dataType: setting.dataType || "json", // 解析方式

? ? ? ? data: setting.data || "", // 參數(shù)

? ? ? ? success: setting.success || function(){}, // 請求成功回調(diào)

? ? ? ? error: setting.error || function(){} // 請求失敗回調(diào)

? ? }

? ? // 參數(shù)格式化

? ? function params_format (obj) {

? ? ? ? var str = ''

? ? ? ? for (var i in obj) {

? ? ? ? ? ? str += i + '=' + obj[i] + '&'

? ? ? ? }

? ? ? ? return str.split('').slice(0, -1).join('')

? ? }

? ? // 創(chuàng)建ajax對象

? ? var xhr=new XMLHttpRequest();

? ? // 連接服務(wù)器open(方法GET/POST,請求地址, 異步傳輸)

? ? if(opts.method == 'GET'){

? ? ? ? xhr.open(opts.method, opts.url + "?" + params_format(opts.data), opts.async);

? ? ? ? xhr.send();

? ? }else{

? ? ? ? xhr.open(opts.method, opts.url, opts.async);

? ? ? ? xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

? ? ? ? xhr.send(opts.data);

? ? }

? ? /*

? ? ** 每當(dāng)readyState改變時蔚鸥,就會觸發(fā)onreadystatechange事件

? ? ** readyState屬性存儲有XMLHttpRequest的狀態(tài)信息

? ? ** 0 :請求未初始化

? ? ** 1 :服務(wù)器連接已建立

? ? ** 2 :請求已接受

? ? ** 3 : 請求處理中

? ? ** 4 :請求已完成,且相應(yīng)就緒

? ? */

? ? xhr.onreadystatechange = function() {

? ? ? ? if (xhr.readyState === 4 && (xhr.status === 200 || xhr.status === 304)) {

? ? ? ? ? ? switch(opts.dataType){

? ? ? ? ? ? ? ? case "json":

? ? ? ? ? ? ? ? ? ? var json = JSON.parse(xhr.responseText);

? ? ? ? ? ? ? ? ? ? opts.success(json);

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case "xml":

? ? ? ? ? ? ? ? ? ? opts.success(xhr.responseXML);

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? default:

? ? ? ? ? ? ? ? ? ? opts.success(xhr.responseText);

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? }

? ? ? ? }

? ? }

? ? xhr.onerror = function(err) {

? ? ? ? opts.error(err);

? ? }

}

/**

* @param? {url}

* @param? {setting}

* @return {Promise}

*/

fetch(url, setting) {

? ? //設(shè)置參數(shù)的初始值

? ? let opts={

? ? ? ? method: (setting.method || 'GET').toUpperCase(), //請求方式

? ? ? ? headers : setting.headers? || {}, // 請求頭設(shè)置

? ? ? ? credentials : setting.credentials? || true, // 設(shè)置cookie是否一起發(fā)送

? ? ? ? body: setting.body || {},

? ? ? ? mode : setting.mode? || 'no-cors', // 可以設(shè)置 cors, no-cors, same-origin

? ? ? ? redirect : setting.redirect? || 'follow', // follow, error, manual

? ? ? ? cache : setting.cache? || 'default' // 設(shè)置 cache 模式 (default, reload, no-cache)

? ? }

? ? let dataType = setting.dataType || "json", // 解析方式?

? ? ? ? data = setting.data || "" // 參數(shù)

? ? // 參數(shù)格式化

? ? function params_format (obj) {

? ? ? ? var str = ''

? ? ? ? for (var i in obj) {

? ? ? ? ? ? str += `${i}=${obj[i]}&`

? ? ? ? }

? ? ? ? return str.split('').slice(0, -1).join('')

? ? }

? ? if (opts.method === 'GET') {

? ? ? ? url = url + (data?`?${params_format(data)}`:'')

? ? }else{

? ? ? ? setting.body = data || {}

? ? }

? ? return new Promise( (resolve, reject) => {

? ? ? ? fetch(url, opts).then( async res => {

? ? ? ? ? ? let data = dataType === 'text' ? await res.text() :

? ? ? ? ? ? ? ? dataType === 'blob' ? await res.blob() : await res.json()

? ? ? ? ? ? resolve(data)

? ? ? ? }).catch( e => {

? ? ? ? ? ? reject(e)

? ? ? ? })

? ? })

}

7. DOM

$ (selector){

? ? var type = selector.substring(0, 1);

? ? if (type === '#') {

? ? ? ? if (document.querySelecotor) return document.querySelector(selector)

? ? ? ? ? ? return document.getElementById(selector.substring(1))

? ? }else if (type === '.') {

? ? ? ? if (document.querySelecotorAll) return document.querySelectorAll(selector)

? ? ? ? ? ? return document.getElementsByClassName(selector.substring(1))

? ? }else{

? ? ? ? return document['querySelectorAll' ? 'querySelectorAll':'getElementsByTagName'](selector)

? ? }

}

/*檢測類名*/

hasClass (ele, name) {

? ? return ele.className.match(new RegExp('(\\s|^)' + name + '(\\s|$)'));

}

/*添加類名*/

addClass (ele, name) {

? ? if (!this.hasClass(ele, name)) ele.className += " " + name;

}

/*刪除類名*/

removeClass (ele, name) {

? ? if (this.hasClass(ele, name)) {

? ? ? ? var reg = new RegExp('(\\s|^)' + name + '(\\s|$)');

? ? ? ? ele.className = ele.className.replace(reg, '');

? ? }

}

/*替換類名*/

replaceClass (ele, newName, oldName) {

? ? this.removeClass(ele, oldName);

? ? this.addClass(ele, newName);

}

/*獲取兄弟節(jié)點*/

siblings (ele) {

? ? console.log(ele.parentNode)

? ? var chid = ele.parentNode.children,eleMatch = [];

? ? for(var i = 0, len = chid.length; i < len; i ++){

? ? ? ? if(chid[i] != ele){

? ? ? ? ? ? eleMatch.push(chid[i]);

? ? ? ? }

? ? }

? ? return eleMatch;

}

/*獲取行間樣式屬性*/

getByStyle (obj,name){

? ? if(obj.currentStyle){

? ? ? ? return? obj.currentStyle[name];

? ? }else{

? ? ? ? return? getComputedStyle(obj,false)[name];

? ? }

}

8. Storage 儲存操作

class StorageFn {

? ? constructor () {

? ? ? ? this.ls = window.localStorage;

? ? ? ? this.ss = window.sessionStorage;

? ? }

? ? /*-----------------cookie---------------------*/

? ? /*設(shè)置cookie*/

? ? setCookie (name, value, day) {

? ? ? ? var setting = arguments[0];

? ? ? ? if (Object.prototype.toString.call(setting).slice(8, -1) === 'Object'){

? ? ? ? ? ? for (var i in setting) {

? ? ? ? ? ? ? ? var oDate = new Date();

? ? ? ? ? ? ? ? oDate.setDate(oDate.getDate() + day);

? ? ? ? ? ? ? ? document.cookie = i + '=' + setting[i] + ';expires=' + oDate;

? ? ? ? ? ? }

? ? ? ? }else{

? ? ? ? ? ? var oDate = new Date();

? ? ? ? ? ? oDate.setDate(oDate.getDate() + day);

? ? ? ? ? ? document.cookie = name + '=' + value + ';expires=' + oDate;

? ? ? ? }

? ? }

? ? /*獲取cookie*/

? ? getCookie (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*/

? ? removeCookie (name) {

? ? ? ? this.setCookie(name, 1, -1);

? ? }

? ? /*-----------------localStorage---------------------*/

? ? /*設(shè)置localStorage*/

? ? setLocal(key, val) {

? ? ? ? var setting = arguments[0];

? ? ? ? if (Object.prototype.toString.call(setting).slice(8, -1) === 'Object'){

? ? ? ? ? ? for(var i in setting){

? ? ? ? ? ? ? ? this.ls.setItem(i, JSON.stringify(setting[i]))

? ? ? ? ? ? }

? ? ? ? }else{

? ? ? ? ? ? this.ls.setItem(key, JSON.stringify(val))

? ? ? ? }

? ? }

? ? /*獲取localStorage*/

? ? getLocal(key) {

? ? ? ? if (key) return JSON.parse(this.ls.getItem(key))

? ? ? ? return null;

? ? }

? ? /*移除localStorage*/

? ? removeLocal(key) {

? ? ? ? this.ls.removeItem(key)

? ? }

? ? /*移除所有l(wèi)ocalStorage*/

? ? clearLocal() {

? ? ? ? this.ls.clear()

? ? }

? ? /*-----------------sessionStorage---------------------*/

? ? /*設(shè)置sessionStorage*/

? ? setSession(key, val) {

? ? ? ? var setting = arguments[0];

? ? ? ? if (Object.prototype.toString.call(setting).slice(8, -1) === 'Object'){

? ? ? ? ? ? for(var i in setting){

? ? ? ? ? ? ? ? this.ss.setItem(i, JSON.stringify(setting[i]))

? ? ? ? ? ? }

? ? ? ? }else{

? ? ? ? ? ? this.ss.setItem(key, JSON.stringify(val))

? ? ? ? }

? ? }

? ? /*獲取sessionStorage*/

? ? getSession(key) {

? ? ? ? if (key) return JSON.parse(this.ss.getItem(key))

? ? ? ? return null;

? ? }

? ? /*移除sessionStorage*/

? ? removeSession(key) {

? ? ? ? this.ss.removeItem(key)

? ? }

? ? /*移除所有sessionStorage*/

? ? clearSession() {

? ? ? ? this.ss.clear()

? ? }

}

9. Other 其它操作

/*獲取網(wǎng)址參數(shù)*/

getURL(name){

? ? var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");

? ? var r = decodeURI(window.location.search).substr(1).match(reg);

? ? if(r!=null) return? r[2]; return null;

}

/*獲取全部url參數(shù),并轉(zhuǎn)換成json對象*/

getUrlAllParams (url) {

? ? var url = url ? url : window.location.href;

? ? var _pa = url.substring(url.indexOf('?') + 1),

? ? ? ? _arrS = _pa.split('&'),

? ? ? ? _rs = {};

? ? for (var i = 0, _len = _arrS.length; i < _len; i++) {

? ? ? ? var pos = _arrS[i].indexOf('=');

? ? ? ? if (pos == -1) {

? ? ? ? ? ? continue;

? ? ? ? }

? ? ? ? var name = _arrS[i].substring(0, pos),

? ? ? ? ? ? value = window.decodeURIComponent(_arrS[i].substring(pos + 1));

? ? ? ? _rs[name] = value;

? ? }

? ? return _rs;

}

/*刪除url指定參數(shù)屏歹,返回url*/

delParamsUrl(url, name){

? ? var baseUrl = url.split('?')[0] + '?';

? ? var query = url.split('?')[1];

? ? if (query.indexOf(name)>-1) {

? ? ? ? var obj = {}

? ? ? ? var arr = query.split("&");

? ? ? ? for (var i = 0; i < arr.length; i++) {

? ? ? ? ? ? arr[i] = arr[i].split("=");

? ? ? ? ? ? obj[arr[i][0]] = arr[i][1];

? ? ? ? };

? ? ? ? delete obj[name];

? ? ? ? var url = baseUrl + JSON.stringify(obj).replace(/[\"\{\}]/g,"").replace(/\:/g,"=").replace(/\,/g,"&");

? ? ? ? return url

? ? }else{

? ? ? ? return url;

? ? }

}

/*獲取十六進(jìn)制隨機(jī)顏色*/

getRandomColor () {

? ? return '#' + (function(h) {

? ? ? ? return new Array(7 - h.length).join("0") + h;

? ? })((Math.random() * 0x1000000 << 0).toString(16));

}

/*圖片加載*/

imgLoadAll(arr,callback){

? ? var arrImg = [];

? ? for (var i = 0; i < arr.length; i++) {

? ? ? ? var img = new Image();

? ? ? ? img.src = arr[i];

? ? ? ? img.onload = function(){

? ? ? ? ? ? arrImg.push(this);

? ? ? ? ? ? if (arrImg.length == arr.length) {

? ? ? ? ? ? ? ? callback && callback();

? ? ? ? ? ? }

? ? ? ? }

? ? }

}

/*音頻加載*/

loadAudio(src, callback) {

? ? var audio = new Audio(src);

? ? audio.onloadedmetadata = callback;

? ? audio.src = src;

}

/*DOM轉(zhuǎn)字符串*/

domToStirng(htmlDOM){

? ? var div= document.createElement("div");

? ? div.appendChild(htmlDOM);

? ? return div.innerHTML

}

/*字符串轉(zhuǎn)DOM*/

stringToDom(htmlString){

? ? var div= document.createElement("div");

? ? div.innerHTML=htmlString;

? ? return div.children[0];

}

/**

* 光標(biāo)所在位置插入字符寨辩,并設(shè)置光標(biāo)位置

*

* @param {dom} 輸入框

* @param {val} 插入的值

* @param {posLen} 光標(biāo)位置處在 插入的值的哪個位置

*/

setCursorPosition (dom,val,posLen) {

? ? var cursorPosition = 0;

? ? if(dom.selectionStart){

? ? ? ? cursorPosition = dom.selectionStart;

? ? }

? ? this.insertAtCursor(dom,val);

? ? dom.focus();

? ? console.log(posLen)

? ? dom.setSelectionRange(dom.value.length,cursorPosition + (posLen || val.length));

}

/*光標(biāo)所在位置插入字符*/

insertAtCursor(dom, val) {

? ? if (document.selection){

? ? ? ? dom.focus();

? ? ? ? sel = document.selection.createRange();

? ? ? ? sel.text = val;

? ? ? ? sel.select();

? ? }else if (dom.selectionStart || dom.selectionStart == '0'){

? ? ? ? let startPos = dom.selectionStart;

? ? ? ? let endPos = dom.selectionEnd;

? ? ? ? let restoreTop = dom.scrollTop;

? ? ? ? dom.value = dom.value.substring(0, startPos) + val + dom.value.substring(endPos, dom.value.length);

? ? ? ? if (restoreTop > 0){

? ? ? ? ? ? dom.scrollTop = restoreTop;

? ? ? ? }

? ? ? ? dom.focus();

? ? ? ? dom.selectionStart = startPos + val.length;

? ? ? ? dom.selectionEnd = startPos + val.length;

? ? } else {

? ? ? ? dom.value += val;

? ? ? ? dom.focus();

? ? }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市锄奢,隨后出現(xiàn)的幾起案子失晴,更是在濱河造成了極大的恐慌,老刑警劉巖拘央,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涂屁,死亡現(xiàn)場離奇詭異,居然都是意外死亡灰伟,警方通過查閱死者的電腦和手機(jī)拆又,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來袱箱,“玉大人遏乔,你說我怎么就攤上這事》⒈剩” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵凉翻,是天一觀的道長了讨。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么前计? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任胞谭,我火速辦了婚禮,結(jié)果婚禮上男杈,老公的妹妹穿的比我還像新娘丈屹。我一直安慰自己,他們只是感情好伶棒,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布旺垒。 她就那樣靜靜地躺著,像睡著了一般肤无。 火紅的嫁衣襯著肌膚如雪先蒋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天宛渐,我揣著相機(jī)與錄音竞漾,去河邊找鬼。 笑死窥翩,一個胖子當(dāng)著我的面吹牛业岁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寇蚊,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼叨襟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了幔荒?” 一聲冷哼從身側(cè)響起糊闽,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎爹梁,沒想到半個月后右犹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡姚垃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年念链,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片积糯。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡掂墓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出看成,到底是詐尸還是另有隱情君编,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布川慌,位于F島的核電站吃嘿,受9級特大地震影響祠乃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜兑燥,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一亮瓷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧降瞳,春花似錦嘱支、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至亮靴,卻和暖如春馍盟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背茧吊。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工贞岭, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人搓侄。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓瞄桨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親讶踪。 傳聞我的和親對象是個殘疾皇子芯侥,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容