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

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

Js替换地址栏参数的更多相关文章

  1. js 读取 地址栏参数 转

    用JS获取地址栏参数的方法(超级简单) 方法一:采用正则表达式获取地址栏参数:( 强烈推荐,既实用又方便!)   function GetQueryString(name) {      var re ...

  2. 【功能代码】---4用JS获取地址栏参数方法

    用JS获取地址栏参数方法 // 方法一:采用正则表达式获取地址栏参数:( 强烈推荐,既实用又方便!) function GetQueryString(name) { var reg = new Reg ...

  3. (转)用JS获取地址栏参数的方法(超级简单)

    转自http://www.cnblogs.com/fishtreeyu/archive/2011/02/27/1966178.html 用JS获取地址栏参数的方法(超级简单) 方法一:采用正则表达式获 ...

  4. 【JS】---4用JS获取地址栏参数方法

    用JS获取地址栏参数方法 // 方法一:采用正则表达式获取地址栏参数:( 强烈推荐,既实用又方便!) function GetQueryString(name) { var reg = new Reg ...

  5. JS获取地址栏参数&jquery

    第一种:字符串拆分法 window.location.href 或者 location.href 或者 window.location 获得地址栏中的所有内容 decodeURI()可以解码地址栏中的 ...

  6. 用JS获取地址栏参数的方法

    采用正则表达式获取地址栏参数: function GetQueryString(name) {      var reg = new RegExp("(^|&)"+ nam ...

  7. 用JS获取地址栏参数的方法(超级简单)

    方法一:采用正则表达式获取地址栏参数:( 强烈推荐,既实用又方便!) function GetQueryString(name) {      var reg = new RegExp("( ...

  8. JS获取地址栏参数

    获取地址栏参数(其中name为你所需要的参数值) function GetQueryString(name) { var reg = new RegExp("(^|&)" ...

  9. JS 获取 地址栏 参数

    法一:正则表达式 /** * 采用正则表达式获取地址栏参数: **/ var GetQueryString = function (name) { var reg = new RegExp(" ...

随机推荐

  1. 解决网站出错后 跳转 友好页面 的 asp .net 配置

    <system.webServer> <httpErrors errorMode="DetailedLocalOnly"> <remove statu ...

  2. Visual Studio 2008 – ASP.NET “System.Runtime.InteropServices.COMException”

    The Issue When openning an existing ASP.NET project for the first time in Visual Studio 2008 it retu ...

  3. TreeView节点

    TreeView由节点构成,建树通过对TreeView.items属性进行操作.Items是一个TTreeNodes对象,这是一个TTreeNode集. 一.针对TTreeNodes,也就是 Tree ...

  4. python 使用__slots__

    正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性.先定义class: >>> class Studen ...

  5. 射频识别技术漫谈(5)——防冲突【worldsing 笔记】

    正常情况下读写器某一时刻只能对磁场中的一张射频卡进行读写操作.但是当多张卡片同时进入读写器的射频场时,读写器怎么办呢?读写器需要选出唯一的一张卡片进行读写操作,这就是防冲突. 防冲突机制是非接触式智能 ...

  6. define

    define('player',['videoplay'],function(videoplay){ var wrap_player = $('#live_SWF'), obj_player = '' ...

  7. The maximum number of cell styles was exceeded. You can define up to 4000 styles

    POI操作Excel中,导出的数据不是很大时,则不会有问题,而数据很多或者比较多时, 就会报以下的错误,是由于cell styles太多create造成,故一般可以把cellstyle设置放到循环外面 ...

  8. Genymotion中文手册

    目录1.概述 22.特点 22.1最擅长于虚拟Android 22.2高可控性 22.3管理你的设备 22.4从Eclipse中开启虚拟设备 33.要求 33.1操作系统要求 33.2系统硬件要求 3 ...

  9. ORM之二:核心接口与扩展操作

    一.数据库提供者接口 /// <summary> /// 数据库提供者 /// </summary> public interface IDbProvider : IDispo ...

  10. 匿名内部类new Runnable()

    匿名内部类(Anonymous Inner Class),在创建实例的同时给出类的定义,所有这些在一个表达式中完成. Java code? 1 2 3 4 Runnable rn = new Runn ...