无论是前端开发还是后台设计 很多时候开发人员都需要获取当前或目标网址的相关信息 这个已有现成的内置对象属性可以直接调用了(下面是获取当前页面的参考代码)
复制代码 代码如下: <script type=text/javascript>thisURL = document URLthisHREF = document location hrefthisSLoc = self location hrefthisDLoc = document locationstrwrite = " thisURL: [" + thisURL + "]<br>" strwrite += " thisHREF: [" + thisHREF + "]<br>" strwrite += " thisSLoc: [" + thisSLoc + "]<br>" strwrite += " thisDLoc: [" + thisDLoc + "]<br>" document write( strwrite )</script>但有时候我们需要改变目前网址的参数/参数值 这时候大家会如何处理呢?一般应该都会先通过获取所有参数的信息 然后再根据实际需求来对某一参数进行修改 没错!根据这一原理 今天就给大家分享一下个人在开发中封装的功能函数 //=============== 改变网址的参数值 ================
复制代码 代码如下: function ChangeURLParm(Turl Parm PValue ClearParm){ //Turl: 网址 //Parm 参数 //PValue 参数值 //ClearParm: 要清除的参数 var URL Parms ParmsArr IsExistvar NewURL = Turl//window location href IsExist = falsewith(Turl){ if(indexOf( ? )>){ URL = substr( indexOf( ? ))//不包含参数 Parms = substr(indexOf( ? )+ length)//参数 } else{ URL = TurlParms = } } if (Parms!= ){ var iParmsArr = Parms split("&")for(i= i<=ParmsArr length i++){ if (String(Parm) toUpperCase()==String(ParmsArr[i] split("=")[ ]) toUpperCase()){//原来有参数Parm则改变其值 ParmsArr[i] = Parm + "=" + PValueIsExist = trueif (String(ClearParm) ==""){ break} } else if ( (String(ClearParm)!="") &&(String(ClearParm) toUpperCase()==String(ParmsArr[i] split("=")[ ])) toUpperCase() ){//去掉参数ClearParm的值 ParmsArr[i] = ClearParm + "="} } for(i= i<=ParmsArr length i++){ if(i== ){ Parms = ParmsArr[i]} else{ Parms = Parms + "&" + ParmsArr[i]} } NewURL = URL + "?" + Parmsif (!IsExist){ NewURL = NewURL + "&" + Parm + "=" + PValue} } else{ NewURL = URL + "?" + Parm + "=" + PValue} return NewURL} lishixinzhi/Article/program/Java/JSP/201311/20336如下图,例如当传的值key等于0001时前面的0会被省略,到新的页面拿到key的值为1
因为js 喜欢将弱类型数据0002这样的string自己转成int.这个时候我们可以在0002前面拼接上任意一个数字,到了新页面以后在进行截取
var keys = '1'+key
subto(keys)
到了新页面以后
如下图,这里的firetaskid的值是个像abc这样的字符串,直接这样写的话会报错
查了一下是js转义的问题,如下图,转义一下就可以了
就像特殊字符需要转义一样,在利用url传递特殊字符时也有一个转义的过程
firetaskid = encodeURIComponent(firetaskid)
在这里我是用encodeURIComponent()这个函数解决的,encodeURIComponent()函数可把字符串作为 URI 组件进行编码。
该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
其他字符(比如 :/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。
注意:encodeURIComponent()假定它的参数是 URI的一部分(比如协议、主机名、路径或查询字符串)。因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号.
网址: http://1.com/调用: QueryString('name')
返回: null
网址: http://1.com/?name=cwj&age=21
调用: QueryString('name')
返回: cwj
现在随便拿一个网址: https://m.weibo.cn/u/5902368392?topnav=1&wvr=6&is_all=1&jumpfrom=weibocom ,这个网址的 location 是:
所以这个地址的 location.search 是 ?topnav=1&wvr=6&is_all=1&jumpfrom=weibocom ,这就是需要执行匹配的字符串
match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
存放匹配结果的数组。在这个方法中将匹配结果放在了数组 sValue 中。
RegExp 对象表示正则表达式
该对象接受两个参数,第一个参数是一个字符串,指定了正则表达式的模式或其他正则表达式。第二个参数 i 代表着区分大小写的匹配。
调用该方法: QueryString('wvr') ,根据以上正则表达式匹配出来的结果是:
要注意的是 match 方法返回的数组 0 位置是匹配的字符串,所以相应参数在 sValue[1] 中
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)