第一,正则表达式,直接找出参数等号右边的值即可。但是,如果该参数后还有&就不可行。
<script language="javascript"> var str=window.location.href; var es=/clid=/; es.exec(str); var right=RegExp.rightContext; if(right=="1") { sub_nav_4.style.display = "block"; li4.style.background = "#a1ca00"; } </script>
第二,把能找到的参数都付给argsarr数组,将来可以用argsarr[i]进行相应的访问,方法不错,太长,参数不容易记忆。
/**//** * 提取URL中的参数 */ function getArgs() { //加上substring的意义是去掉查询字符串中的?号。 //var query = window.location.search.substring(1); //定义一个数组,用于存放取出来的字符串参数。 var argsArr = new Object(); //获取URL中的查询字符串参数 var query = window.location.search; query = query.substring(1); //这里的pairs是一个字符串数组 var pairs = query.split("&");//name=myname&password=1234&sex=male&address=nanjing for(var i=0;i<pairs.length;i++) { var sign = pairs[i].indexOf("="); //如果没有找到=号,那么就跳过,跳到下一个字符串(下一个循环)。 if(sign == -1) { continue; } var aKey = pairs[i].substring(0,sign); var aValue = pairs[i].substring(sign+1); argsArr[aKey] = aValue; } return argsArr; }
第三,最简单的方法,类似第二种,不过没有创建数组存参数,可直接访问参数的名字,容易看懂。
<script language="javascript"> function getarg() { var url = unescape(window.location.href); var allargs = url.split("?")[1]; var args = allargs.split("&"); for(var i=0; i<args.length; i++) { var arg = args[i].split("="); eval('this.'+arg[0]+'="'+arg[1]+'";'); } } var urlarg=new getarg(); if(urlarg.clid=="1") { sub_nav_6.style.display = "block"; li6.style.background = "#a1ca00"; } </script>
<script language = javascript> function request(paras){ var url = location.href; var paraString = url.substring(url.indexOf("?")+1,url.length).split("&"); var paraObj = {} for (i=0; j=paraString[i]; i++){ paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length); } var returnValue = paraObj[paras.toLowerCase()]; if(typeof(returnValue)=="undefined"){ return ""; }else{ return returnValue; } } var theurl=request('url'); var theimg=request('img'); document.writeln("<a href='" + theurl + "' target=_blank><img src=" + theimg + " width=750 height=450 border=0></a>"); </script>