在两个页面间通过url传参的时候,需要获取传递的查询字符串,例如获取下面url的name对应的值:
www.baidu.com/img?name=lili&age=18&school=81school
有两种方法,一是用数组split()为主的拆分,二是用正则表达式的拆分。
1 数组拆分:
function getQueryStringArgs(){ var qs = (location.search.length > 0 ? location.search.substring(1) : ""); args = {}, items = qs.length ? qs.split("&") : [], item = null, name = null, value = null, i = 0, len = items.length; for(i=0; i<len; i++){ item = items.split("="); name = decodeURIComponent(item[0]); value = decodeURIComponent(item[1]); if(name.length){ args[name] = value; } } return args;}
2 正则表达式:
function getQuery(name) { var reg = new RegExp("(^|&)"+name+"=([^&]*)(&|$)"), str = window.location.search.substr(1).match(reg); if(str !== null) { return unescape(str[2]); } return null;}
3 自己写的:(反面案例)
function getQuery(){ var search = location.search.substring(1), queryArr = search.split('&'), obj; for(var i=0, len=queryArr.length; i < len; i++){ var str = queryArr.split('='); obj[str[0]] = str[1]; } return obj;}
1是参考js高级程序设计P207页。