使用js获取QueryString的方法小结


Posted in Javascript onFebruary 28, 2010

本文原理是使用正则表达式匹配location.search中的字符串。其中三个主要函数为 getQueryString()、getQueryStringByName(name)和getQueryStringByIndex(index)

三个主要方法:

方法 说明
getQueryString 获取QueryString的数组。 例如路径QueryStringDemo.html?id=5&type=1&flag=0 调用后返回["id=5", "type=1", "flag=0"]
getQueryStringByName 根据QueryString参数名称获取值
getQueryStringByIndex 根据QueryString参数索引获取值
//获取QueryString的数组 
function getQueryString(){ 
var result = location.search.match(new RegExp("[\?\&][^\?\&]+=[^\?\&]+","g")); 
for(var i = 0; i < result.length; i++){ 
result[i] = result[i].substring(1); 
} 
return result; 
} 
//根据QueryString参数名称获取值 
function getQueryStringByName(name){ 
var result = location.search.match(new RegExp("[\?\&]" + name+ "=([^\&]+)","i")); 
if(result == null || result.length < 1){ 
return ""; 
} 
return result[1]; 
} 
//根据QueryString参数索引获取值 
function getQueryStringByIndex(index){ 
if(index == null){ 
return ""; 
} 
var queryStringList = getQueryString(); 
if (index >= queryStringList.length){ 
return ""; 
} 
var result = queryStringList[index]; 
var startIndex = result.indexOf("=") + 1; 
result = result.substring(startIndex); 
return result; 
}

测试页面路径:QueryStringDemo.html?id=5&type=1&flag=0
页面加载时:
使用js获取QueryString的方法小结
在QueryString's name后的文本框中输入要获取的QueryString的名称获取相应的值:
使用js获取QueryString的方法小结
在QueryString's index后的文本框中输入要获取的QueryString的索引获取相应的值(索引从0开始):
使用js获取QueryString的方法小结
这样就可以在页面中方便的获取QueryString的值了。最后附上测试页面QueryStringDemo.html的源代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta content="text/html; charset=gb2312" http-equiv="Content-Type" /> 
<title>QueryString获取演示代码 3water.com</title> 
<script type="text/javascript"> 
//获取QueryString的数组 
function getQueryString(){ 
var result = location.search.match(new RegExp("[\?\&][^\?\&]+=[^\?\&]+","g")); 
for(var i = 0; i < result.length; i++){ 
result[i] = result[i].substring(1); 
} 
return result; 
} 
//根据QueryString参数名称获取值 
function getQueryStringByName(name){ 
var result = location.search.match(new RegExp("[\?\&]" + name+ "=([^\&]+)","i")); 
if(result == null || result.length < 1){ 
return ""; 
} 
return result[1]; 
} 
//根据QueryString参数索引获取值 
function getQueryStringByIndex(index){ 
if(index == null){ 
return ""; 
} 
var queryStringList = getQueryString(); 
if (index >= queryStringList.length){ 
return ""; 
} 
var result = queryStringList[index]; 
var startIndex = result.indexOf("=") + 1; 
result = result.substring(startIndex); 
return result; 
} 
//绑定当控件高亮选中时,点击“回车键”时执行的操作 
//control:要绑定事件的控件 
//func:要执行的方法 
function bindEnterEvent(control, func){ 
control.onkeypress = function(){ 
if (event.keyCode == 13){ 
func(); 
} 
} 
} 
//根据输入的QueryString名称获取值 
function getByName(){ 
var name = document.getElementById("txtQueryStringName").value; 
document.getElementById("txtResult").innerHTML = getQueryStringByName(name); 
} 
//根据输入的QueryString的索引获取值 
function getByIndex(){ 
var index = document.getElementById("txtQueryStringIndex").value; 
document.getElementById("txtResult").innerHTML = getQueryStringByIndex(index); 
} 
</script> 
</head> 
<body> 
<div> 
<span>QueryString : </span><span id="queryString"></span> 
</div> 
<div> 
<span>QueryString's name : </span> 
<input id="txtQueryStringName" name="txtQueryStringName" type="text" /> 
<input name="btnGetByName" type="button" value="获取" onclick="getByName()" /> 
</div> 
<div> 
<span>QueryString's index : </span> 
<input id="txtQueryStringIndex" name="txtQueryStringIndex" type="text" /> 
<input name="btnGetByIndex" type="button" value="获取" onclick="getByIndex()" /> 
</div> 
<div> 
<span>结果 :</span><span id="txtResult"></span> 
</div> 
<!--页面加载时执行的操作--> 
<script type="text/javascript"> 
//显示所有QueryString 
document.getElementById("queryString").innerHTML = getQueryString(); 
//为txtQueryStringName绑定回车事件 
bindEnterEvent(txtQueryStringName, getByName); 
//为txtQueryStringIndex绑定回车事件 
bindEnterEvent(txtQueryStringIndex, getByIndex); 
</script> 
</body> 
</html>

pdf版下载地址
Javascript 相关文章推荐
基于jquery 的一个progressbar widge
Oct 29 Javascript
JavaScript 创建运动框架的实现代码
May 08 Javascript
手机号码,密码正则验证
Sep 04 Javascript
jQuery判断元素上是否绑定了指定事件的方法
Mar 17 Javascript
一张Web前端的思维导图分享
Jul 03 Javascript
浅谈node.js中async异步编程
Oct 22 Javascript
JavaScript接口的实现三种方式(推荐)
Jun 14 Javascript
jQuery zTree 异步加载添加子节点重复问题
Nov 29 jQuery
vue 实现左右拖拽元素并且不超过他的父元素的宽度
Nov 30 Javascript
详解keep-alive + vuex 让缓存的页面灵活起来
Apr 19 Javascript
vue实现的上拉加载更多数据/分页功能示例
May 25 Javascript
五分钟搞懂Vuex实用知识(小结)
Aug 12 Javascript
JQuery 将元素显示在屏幕的中央的代码
Feb 27 #Javascript
jquery 最简单易用的表单验证插件
Feb 27 #Javascript
JQuery团队打造的javascript单元测试工具QUnit介绍
Feb 26 #Javascript
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
Feb 26 #Javascript
JavaScript 空位补零实现代码
Feb 26 #Javascript
javascript replace()正则替换实现代码
Feb 26 #Javascript
javascript function调用时的参数检测常用办法
Feb 26 #Javascript
You might like
php压缩HTML函数轻松实现压缩html/js/Css及注意事项
2013/01/27 PHP
mac下Apache + MySql + PHP搭建网站开发环境
2014/06/02 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
2014/06/23 PHP
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
php中使用gd库实现下载网页中所有图片
2015/05/12 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
云网广告中的代码,提示出错,大家找找
2006/11/21 Javascript
jquery 为a标签绑定click事件示例代码
2014/06/23 Javascript
JavaScript Serializer序列化时间处理示例
2014/07/31 Javascript
node.js使用require()函数加载模块
2014/11/26 Javascript
JavaScript中的全局对象介绍
2015/01/01 Javascript
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解
2015/03/05 Javascript
jQuery在线选座位插件seat-charts特效代码分享
2015/08/27 Javascript
js老生常谈之this,constructor ,prototype全面解析
2016/04/05 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
vue使用vue-cli快速创建工程
2017/07/28 Javascript
JavaScript中立即执行函数实例详解
2017/11/04 Javascript
微信小程序实现留言板(Storage)
2018/11/02 Javascript
webpack打包多页面的方法
2018/11/30 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 大神专访第二弹!
2014/05/20 DOTA
python中获得当前目录和上级目录的实现方法
2017/10/12 Python
pandas 将list切分后存入DataFrame中的实例
2018/07/03 Python
Python字典底层实现原理详解
2019/12/18 Python
python语音识别指南终极版(有这一篇足矣)
2020/09/09 Python
CSS3支持IE6, 7, and 8的边框border属性
2012/12/28 HTML / CSS
HTML5计时器小例子
2013/10/15 HTML / CSS
LA MER海蓝之谜美国官网:传奇面霜
2016/08/27 全球购物
公务员个人自我评价分享
2013/11/06 职场文书
小班秋游活动方案
2014/02/22 职场文书
民族学专业求职信
2014/07/28 职场文书
司机工作自我鉴定
2014/09/19 职场文书
公司离职证明标准范本
2014/10/05 职场文书
停电放假通知
2015/04/14 职场文书
大型强子对撞机再次重启探索“第五种自然力”
2022/04/29 数码科技