相信做页面之间的跳转,很多时候大家都会需要页面1跳转到页面2带参数和参数值,方面再页面2进行相关操作,那么下面博智简单为大家介绍两种方式。
方法一:window.location 对象所包含的属性,然后通过 split 方法结合循环遍历自由组织数据格式。
window.location 对象所包含的属性
属性 | 描述 |
hash | 从井号 (#) 开始的 URL(锚) |
host | 主机名和当前 URL 的端口号 |
hostname | 当前 URL 的主机名 |
href | 完整的 URL |
pathname | 当前 URL 的路径部分 |
port | 当前 URL 的端口号 |
protocol | 当前 URL 的协议 |
search | 从问号 (?) 开始的 URL(查询部分) |
//无中文获取function getQueryVariable(variable){ var query = window.location.search.substring(1); var vars = query.split("&"); for (var i=0;i<vars.length;i ) { var pair = vars[i].split("="); if(pair[0] == variable){return pair[1];} } return(false);}
上面方法无中文情况下,效果满足。有中文参数值,则会乱码,需要解码。那么如果参数值有中文的情况下,可以使用方法二。
方法二:使用正则表达式。
//中文乱码问题解决function getQueryString(name) { //匹配以 &name=开头 或者 name=开头 中间为任意多个除了 & 以外的字符 一旦遇到 & 或者 空白 就中止取值 var reg = new RegExp("(^|&)" name "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if (r != null) return decodeURI(r[2]); return null; }
注意 : 创建一个RegExp对象: new RegExp(pattern,attributes);
如果使用new关键字 则会创建一个RegExp对象,如果不使用new关键字则不会创建RegExp对象(直接当做一个正则字符串使用)。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。