Js插件—替换地址栏参数
2020-12-13 04:05
标签:blog class code c http a 开了博客竟然有9个月没在来写过了。真是惭愧。今天需要用到一个用js替换地址栏参数的的功能。就自己用JS自己写了一个简单的函数。贴出来仅供大家参考。代码都写了注视。如下: 方法很简陋,将就着用。还有很多完善的空间。水平有限,只能如此了。 Js插件—替换地址栏参数,搜素材,soscw.com Js插件—替换地址栏参数 标签:blog class code c http a 原文地址:http://www.cnblogs.com/wenjunming/p/3730817.html
/*
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)
u +=
"&"
+ paramName +
"="
+ paramValue;
}
else
{
for
(
var
i = 0; 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
var
ishas =
false
;
//是否存在该参数
var
ap = aparr[i].split(
"="
);
for
(
var
n = 0; 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;
}
上一篇:js数组去重的方法
下一篇:详细解读PHP类的封装