JS各种情况处理
1.获取URL及其参数
实例:URL:file:///C:/Program%20Files/nodejs/test/jumbTarget.html?a=1&&b=2&&c=3
//假设返回的对象类型为Array或单个字符串 function getUrlParams() { var str = location.search; if (str.indexOf("?") != -1) { //判断参数是否存在 var doneStr = str.substr(1); if (doneStr.indexOf("&&") != -1) { var arr1 = doneStr.split("&&"); var arr2 = arr1.map(function (item) { return item.split("=")[1]; }) return arr2; } else { return doneStr.split("="); } } else { console.error("当前URL中无参数存在!"); } }
返回的结果为["1","2","3"],当然也可以进行其他类型的返回,例如object等;
方法二:正则表达式
//假设返回的对象类型为Array(这个例子不对单个参数做判断了) function getUrlParams() { var str = location.search; if (str.indexOf("?") != -1) { //判断参数是否存在 var doneStr = str.substr(1); var reg = /=\w+(?=&&|\b)/g; var arr = doneStr.match(reg); return arr.map(function(item) { return item.substr(1); }) } else { console.error("当前URL中无参数存在!"); } } var paramsArr = getUrlParams(); console.log(paramsArr);
在JS比较尴尬的是,JS并不支持负向零宽断言,所以无法直接使用?<=来匹配=,因此多了map函数的一步。
注:JS不支持正则的负向零宽断言,只支持正向零宽断言。