1.獲取url所有的參數 我們可以直接通過window.location.search來取得這部分,也就是我們需要的url參數。當url沒有包含?時,window.location.search會返回undefined。 2.獲取url中指定鍵名(name)的鍵值(val) 3.利用正則表達式來獲取 ...
1.獲取url所有的參數
我們可以直接通過window.location.search來取得這部分,也就是我們需要的url參數。當url沒有包含?時,window.location.search會返回undefined。
function getUrlVal(str){ if(!str || str.indexOf('?') != 0) return false; var urlValArry = str.replace('?','').split('&'); var urlValObject = {}; for(var i in urlValArry){ urlValObject[urlValArry[i].split('=')[0]] = urlValArry[i].split('=')[1]; }; return urlValObject; }; // https://github.com/search?utf8=%E2%9C%93&q=javascript var urlStr = window.location.search.replace('?',''); console.log(getUrlVal(urlStr)); //輸出 Object {utf8: "%E2%9C%93", q: "javascript"}
2.獲取url中指定鍵名(name)的鍵值(val)
function getOneVal(str,name){ if(!str || str.indexOf('?') != 0) return false; var afterNameStr = str.replace('?','').split(name)[1]; var strFirstSite = afterNameStr.indexOf('&'); // 返回第一個&位置,如果沒有'&'則返回字元串長度 strFirstSite = (strFirstSite == -1) ? afterNameStr.length : strFirstSite var reslt = afterNameStr.slice(1,strFirstSite); return reslt; }; // 'http://www.gotoplay.com/active?itemtype=sport&active=basketball&time=20160614&place=N230&peopleNum=657' var urlStr = window.location.search; console.log(getOneVal(urlStr,'time')) //輸出20160614 console.log(getOneVal(urlStr,'peopleNum')) //657
3.利用正則表達式來獲取參數( 強大的正則總是讓人心生嚮往,利用正則無疑是最簡潔優雅的一種方法)
(1)獲取指定某個參數
function getUrlParam(url,name){ if(!name) return; var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i'), r = url.substr(1).match(reg); if (r != null) { return (r[2]); }else{ return null; } }
(2)獲取所有的參數
function parse_url(url){ if(!url) return; var pattern = /(\w+)=(\w+)/ig; var parames = {}; url.replace(pattern, function(a, b, c){ parames[b] = c; }); return parames; }