首页 > 代码库 > Js插件—替换地址栏参数
Js插件—替换地址栏参数
开了博客竟然有9个月没在来写过了。真是惭愧。今天需要用到一个用js替换地址栏参数的的功能。就自己用JS自己写了一个简单的函数。贴出来仅供大家参考。代码都写了注视。如下:
?
/* js替换URL参数值,无该参数则添加 例:http://www.daoyan.com/aaa.htm?cid=aaa&cname=zhangsan 使用:subUrlParam(‘cid‘,"bbb");将返回 http://www.daoyan.com/aaa.htm?cid=bbb&cname=zhangsan */ /* 替换地址栏参数值 paramName为参数名 paramValue为参数值 如果有多个参数,则把剩余参数组装成name=value&name1=value1....格式的字符串传入 例如:subUrlParam("cid","bbb","name=zhangsan&age=18") */ function subUrlParam(paramName, paramValue) { var result; //返回的新地址 var args; //多个参数 if (arguments.length > 2) args = arguments[2]; var s = window.location.search; //获取传递的参数。如:?cid=bbb&cname=zhangsan if (s != null && s.length > 1) { var u = s.substr(1); //去掉参数前面的问号 var parr = u.split( "&" ); //如果地址栏不包含传递的参数,则直接添加该参数 if (u.indexOf(paramName) < 0) { u += "&" + paramName + "=" + paramValue; } else { for ( var i = 0; i < parr.length; i++) { var arr = parr[i].split( "=" ); //分割地址栏参数,cid=aaa //如果当前的参数名和传递的参数名相同,则把当前参数的值替换成传递的值 if (arr[0] == paramName) { u = u.replace(parr[i], paramName + "=" + paramValue); break ; } } } //遍历传递进来的多个参数集合,并和原来地址栏上的参数集合对比,如果存在该参数则替换其值,不存在则直接添加该参数 if (args != null && args.length > 0) { var aparr = args.split( "&" ); for ( var i = 0; i < aparr.length; i++) { var ishas = false ; //是否存在该参数 var ap = aparr[i].split( "=" ); for ( var n = 0; n < parr.length; n++) { var arr = parr[n].split( "=" ); if (arr[0] == ap[0]) { ishas = true ; u = u.replace(parr[n], aparr[i]); break ; } } //原来参数集合中不存在该参数则添加 if (!ishas) { u += "&" + aparr[i]; } } } result = location.pathname + "?" + u; } else { //地址栏没有参数时,直接添加传递的参数 result = location.href + "?" + paramName + "=" + paramValue; if (args != null && args.length > 0) { result += args; } } return result; } |
方法很简陋,将就着用。还有很多完善的空间。水平有限,只能如此了。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。