場景描述:當我們從一個頁面要帶有一兩個值跳轉到另一個頁面,另一個頁面要使用這些參數的時候,我們就需要通過js獲取這些參數啦。
先貼上代碼:
function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return null; }
這里我們使用正則,通過找到 ‘name’ ,然后獲取我們需要的參數。這里的name就是你傳過來的(例如:id,userName之類的都可以)。
下面我們具體講一下:
reg:(這個是reg的結果,id是我傳過來的)
/(^|&)id=([^&]*)(&|$)/i
r: (這里打印出來的是一個數組,你可以自己選擇符合我們自己需求的來使用。這里我需要用到它的值,所以取 r[2])
["id=10", "", "10", "", index: 0, input: "id=10"]
調用的時候只需要這樣使用:
getQueryString("id")//這里我需要獲取url里面的id的值
正常情況以上方法可以實現需求,但是有一種情況上面方式行不通。
vue 的路由包含#號的情況下,我們只用通過另外一種方式實現:
function getQueryString (name) { /* eslint-disable */ return decodeURIComponent((new RegExp('[?|&]'+name+'='+'([^&;]+?)(&|#|;|$)').exec(location.href)||[, ''])[1].replace(/\+/g, '%20')) || null /* eslint-enable */ }
調用的時候:
getQueryString('id') // 這里我需要獲取url里面的id的值