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;
}
方法很简陋,将就着用。还有很多完善的空间。欢迎大家拍砖。
Js替换地址栏参数的更多相关文章
- js 读取 地址栏参数 转
用JS获取地址栏参数的方法(超级简单) 方法一:采用正则表达式获取地址栏参数:( 强烈推荐,既实用又方便!) function GetQueryString(name) { var re ...
- 【功能代码】---4用JS获取地址栏参数方法
用JS获取地址栏参数方法 // 方法一:采用正则表达式获取地址栏参数:( 强烈推荐,既实用又方便!) function GetQueryString(name) { var reg = new Reg ...
- (转)用JS获取地址栏参数的方法(超级简单)
转自http://www.cnblogs.com/fishtreeyu/archive/2011/02/27/1966178.html 用JS获取地址栏参数的方法(超级简单) 方法一:采用正则表达式获 ...
- 【JS】---4用JS获取地址栏参数方法
用JS获取地址栏参数方法 // 方法一:采用正则表达式获取地址栏参数:( 强烈推荐,既实用又方便!) function GetQueryString(name) { var reg = new Reg ...
- JS获取地址栏参数&jquery
第一种:字符串拆分法 window.location.href 或者 location.href 或者 window.location 获得地址栏中的所有内容 decodeURI()可以解码地址栏中的 ...
- 用JS获取地址栏参数的方法
采用正则表达式获取地址栏参数: function GetQueryString(name) { var reg = new RegExp("(^|&)"+ nam ...
- 用JS获取地址栏参数的方法(超级简单)
方法一:采用正则表达式获取地址栏参数:( 强烈推荐,既实用又方便!) function GetQueryString(name) { var reg = new RegExp("( ...
- JS获取地址栏参数
获取地址栏参数(其中name为你所需要的参数值) function GetQueryString(name) { var reg = new RegExp("(^|&)" ...
- JS 获取 地址栏 参数
法一:正则表达式 /** * 采用正则表达式获取地址栏参数: **/ var GetQueryString = function (name) { var reg = new RegExp(" ...
随机推荐
- 从assemblyer Instructure deepth understander C principle
要彻底搞清楚C语言的原理,就必须深入到指令一层去理解.你写一行C代码,编译器会生成什么样的指令,要做到心中有数;
- 教程-Delphi中Spcomm使用属性及用法详解
Delphi中Spcomm使用属性及用法详解 Delphi是一种具有 功能强大.简便易用和代码执行速度快等优点的可视化快速应用开发工具,它在构架企业信息系统方面发挥着越来越重要的作用,许多程序员愿意选 ...
- C#基础系列(一)
1.vs中F5(调试)和Ctrl + F5(直接运行不调试)的区别: Ctrl+F5是直接运行生成的程序,不进行重新编绎,所以运行起来比较快F5是重新编绎后再运行,这样可以在程序代码中设置断点跟踪来调 ...
- C++学习笔记(六):复杂数据类型(string、容器和STL)
STL 即Standard Template Library(标准模板库),由于C++自带的数据类型过于简单,并不能满足我们的使用需要,而STL作为C++标准的内置库为我们编写好了多种高效的数据结构和 ...
- Oracle管道函数示例
Oracle的管道函数需要定义下面的三样: Record/Object Type:定义一个Record或Object类型的变量,这个变量用于表示返回结果集的一行数据,有点像C#中的DataRow类. ...
- ECSHOP在线手册布局参考图--通用活动页 group_list.dwt等
A.购物车 1,设置方法 程序自动读取购物车的商品数量 2,代码相关 cart.lbi 中 {insert_scripts files='transport.js'} <div clas ...
- 【Android - MD】之Snackbar的使用
Snackbar 是 Android 5.0 新特性--Material Design 中的一个控件,用来代替 Toast ,Snackbar与Toast的主要区别是:Snackbar可以滑动退出,也 ...
- hdu 2844 Coins (多重背包)
题意是给你几个数,再给你这几个数的可以用的个数,然后随机找几个数来累加, 让我算可以累加得到的数的种数! 解题思路:先将背包初始化为-1,再用多重背包计算,最后检索,若bb[i]==i,则说明i这个数 ...
- VPN介绍--虚拟网络
VPN属于远程访问技术,简单地说就是利用公网链路架设私有网络.例如 公司员工出差到外地,他想访问企 原理 业内网的 服务器资源,这种访问就属于远程访问.怎么才能让外地员工访问到内网资源呢?VPN的 ...
- joa-framework 工作流高速开发框架(jeecg官方工作流版本号) 公布
-------------------------------------- version: joa-framework1.0.0.beta 版本号: JOA 工作流高速开发框架 Date: ...