今天碰到在做一個動態網頁面的時候,需要用到 URL 的參數值來作判斷,從而決定某一塊內容在當前頁面是否顯示。例如exampe.html?parm1=xxx&parm2=xxx&parm3=xxx&…,在這裡就需要擷取.html後面的所有參數的值。
腦子裡的第一個想法是利用“&”符號分割 URL ,從而達到擷取參數值的目的。
同時在網上搜了下,實地操作後,記錄如下。
方法一:
在某一塊內容的 div 標籤後面,加入如下 Javascript 代碼:
代碼如下 |
複製代碼 |
<script type="text/javascript"> function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = document.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return null; } if(getQueryString("parm1") != null) { document.getElementById("xxxx").style.display = "none"; } </script> |
這裡用到的判斷就是,根據 parm1 的值來決定是否顯示 id 為 xxxx 這一塊 div 地區。
此處用到的Regex解釋:
以&開始或直接以name開始;以&結束或直接結束;name的值是由0到多個不是&的字元組成;”i”是忽略大小寫!
方法二:
這是一個擷取 URL 帶 questring 參數的Javascript用戶端解決方案。
代碼如下 |
複製代碼 |
<script type="text/javascript"> function GetRequest() { var url = location.search; //擷取url中"?"符後的字串 var theRequest = new Object(); if (url.indexOf("?") != -1) { var str = url.substr(1); if (str.indexOf("&") != -1) { strs = str.split("&"); for (var i = 0; i < strs.length; i++) { theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]); } } else { theRequest[str.split("=")[0]] = unescape(str.split("=")[1]); } } return theRequest; } </script> |
調用此函數的方法:
代碼如下 |
複製代碼 |
<script type="text/javascript"> var Request = new Object(); Request = GetRequest(); var parm1,parm2,parm3,parmN; parm1 = Request['parm1']; parm2 = Request['parm2']; parm3 = Request['parm3']; parmN = Request['parmN']; </script> |