1. 程式人生 > >案例:JS獲取URL中引數值的方法

案例:JS獲取URL中引數值的方法

假設位址列地址是:http://localhost:3000/m/productlist.html?search=%E9%9E%8B
思路分析:
1.location.search//得到?search=%E9%9E%8B
2.location.search.substring(1)//"search=%E9%9E%8B"(substring是擷取字串,引數1代表從什麼時候擷取,引數二代表結束位置)
3.location.search.substring(1).split('=');//["search", "%E9%9E%8B"],split是分割的意思
4.location.search.substring(1).split('=').[1]//"%E9%9E%8B"
5.decodeURI("%E9%9E%8B")//鞋

真實案例:
方法1:

// http://localhost:3000/m/productlist.html?search=%E9%9E%8B&price=1&num=2
// 根據url中引數名獲取值
// ?search=%E9%9E%8B&price=1&num=2 引數
// 引數名 = search  引數值 = 鞋
// 引數名 = price  引數值 = 1
// 引數名 = num  引數值 = 2
function getQueryString(name){
	// console.log(location);
	// console.log(location.search);
// 1. 獲取整個url引數的值的字串 去掉第一個字串 按照&分割成一個數組 var urlParams = location.search.substr(1).split('&'); // var urlParams = location.search.substring(1,location.search.length); // console.log(urlParams); for (var i = 0; i < urlParams.length; i++) { // search=%E9%9E%8B =前面引數名 以=分割 如果等號前面的和引數名一樣 返回=號後面的引數的值
if(name == urlParams[i].split('=')[0]){ // 返回當前引數的值 同時轉碼 return decodeURI(urlParams[i].split('=')[1]); } } } console.log(getQueryString('search'));//鞋 console.log(getQueryString('price'));//1 console.log(getQueryString('num'));//2

方法2:(參考文件:https://www.cnblogs.com/jiguisheng/p/5735030.html)


function getQueryString(name) {
    var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
    var r = window.location.search.substr(1).match(reg);
    //console.log(r);
    if (r != null) {
        //轉碼方式改成 decodeURI
        return decodeURI(r[2]);
    }
    return null;
}