在項目中常常遇到兩個頁面傳值的狀況,我採起的方案是經過url後面加參數,也就是get方式傳值。瀏覽器
這個方式的優勢是:傳值、獲取很方便。url
缺點是:1. 把參數都暴露在瀏覽器中了,一些敏感信息不建議這樣傳;spa
2. 要是有搗蛋的人把瀏覽器的地址後綴改改,那樣參數就有可能被改了;code
3. 每一個瀏覽器都有個最大的長度限制,其中ie最少,爲2048 字符。blog
好了,迴歸正題,當用get方式傳值的時候,須要獲取一些須要值,有兩個方案,有一個是本身寫的:字符串
方案一:get
1 function getQueryString (name) { 2 var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"), 3 r = window.location.search.substr(1).match(reg); 4 if (r != null) { 5 return unescape(r[2]); 6 } 7 return ''; 8 }
這個方案是用正則匹配name的值。it
方案二:io
1 function getUrlParam(name) { 2 var url = window.location.herf.search.split('?')[1], 3 arrs = url.split('&'); 4 for(var i=0; i<arrs.length; i++) { 5 if(arrs[i].split('=')[0] === name) { 6 return arrs[i].split('=')[1]; 7 } 8 } 9 return ''; 10 }
這個方案是經過字符串分割,加上for循環實現。for循環
總結:原理其實都是對url這個字符串裏面的值進行匹配查找,都是對字符串的一些基本操做,因此學好基礎,才能建造高樓大廈!