开了博客竟然有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;
}

  方法很简陋,将就着用。还有很多完善的空间。欢迎大家拍砖。

最新文章

  1. NodeJs支付宝移动支付签名及验签
  2. ELK分析IIS日志
  3. 用html5 canvas和JS写个数独游戏
  4. PYTHON 购物车程序
  5. 电脑上安装的android虚拟机,能进行基站定位和GPS定位吗?要怎么做才能定位?(转)
  6. tab切换类
  7. CorelDRAW中拆清除调和效果的技巧
  8. 用pdo实现的织梦后台留言板
  9. Photoshop技巧:图层蒙版同步隐藏图层样式
  10. php里面为什么header之前有输出报错 源码分析
  11. 虚拟机添加磁盘LVM分区
  12. [Typescript] Introduction to Generics in Typescript
  13. 【转】ubuntu安装ftp服务器
  14. webstorm创建nodejs + express + jade 的web 项目
  15. Vue.js的从入门到放弃进击录(二)
  16. Jquery.Uploadify实现批量上传显示进度条 取消 上传后缩略图显示 可删除
  17. [Luogu 3768]简单的数学题
  18. nodejs中使用crypto-js先HmacSha1加密后转Base64
  19. CString类型与其他类型的转换
  20. Chapter4_控制执行流程

热门文章

  1. tomcat 7 用户设置
  2. mysql 索引建立
  3. maven快速入门
  4. SUSE的SSHD配置及设置防火墙
  5. 详解UML中的聚合,关联,泛化等关系
  6. UITextfield设置Placeholder颜色 控件 内边距、自适应高度
  7. poj 3984 迷宫问题 bfs
  8. Floating-Info---Android
  9. zend studio 安装xdebug
  10. pomelo组件..