地址欄連接參數修改
阿新 • • 發佈:2018-04-27
名稱 UNC [1] 沒有 his hang local font indexof
分享兩個處理地址欄參數的常見方法
第一步:將參數連接轉換為對象
// 將連接參數轉為對象 function queryToJson(url) { let locse = url.split(‘?‘); let search = locse[1] ? locse[1] : locse[0]; let pairs = search.split(‘&‘); let result = {}; pairs.forEach(function (pair) { pair = pair.split(‘=‘);if (pair[0].length > 0) { let resultPair = ‘‘; try { resultPair = decodeURIComponent(pair[1]) || ‘‘; } catch (e) { } result[pair[0]] = resultPair; } }); return result; }
第二步:修改連接參數
// 修改連接參數function changeURLArg(url, arg, argVal) { let pattern = arg + ‘=([^&]*)‘; let replaceText = arg + ‘=‘ + argVal; if (url.match(pattern)) { let tmp = ‘/(‘ + arg + ‘=)([^&]*)/gi‘; tmp = url.replace(eval(tmp), replaceText); return tmp; } else {if (url.match(‘[\?]‘)) { return url + ‘&‘ + replaceText; } else { return url + ‘?‘ + replaceText; } } }
參數解釋
url:就是連接的地址,可以是你手動傳,也可以是localtion.href獲取當前地址
arg:想要修改的參數名稱
argVal:想要把被修改的參數轉化成什麽
使用示例
let URL = location.href; let bbb; //把URL變成對象 let url = this.queryToJson(URL); // 把url的bbb前加aaa if (!!url.bbb) { //如果地址欄有bbb參數的時候 if (url.bbb.indexOf(‘aaa‘) - 0 > -1) { //地址欄bbb參數的值前面有aaa的時候 bbb = url.bbb; } else { //地址欄bbb參數的值不是aaa的時候,在前面加上aaa bbb = ‘aaa‘ + url.bbb; } } else { //如果地址欄沒有bbb參數的時候 bbb = ‘ccc‘; } //修改連接參數 let useurl = this.changeURLArg(URL, ‘bbb‘, bbb);
地址欄連接參數修改