URLの指定クエリの値を取得する

// URLパラメータ文字列を取得する
var param = location.search

alert(param) // 「?lib=jquery&ver=3」が出力

 

上記から指定したクエリの値だけを取得するコード。

 

// URL が「http://www.example.com?lib=jquery&ver=3」の場合

alert(getParam('lib')); //「jquery」を出力
alert(getParam('ver')); // 「3」を出力

/**
 * Get the URL parameter value
 *
 * @param  name {string} パラメータのキー文字列
 * @return  url {url} 対象のURL文字列(任意)
 */
function getParam(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}

stackoverflow.com

 

 

補足

 name = name.replace(/[\[\]]/g"\\$&");

 で、

Uncaught TypeError: Cannot read property 'replace' of undefined

エラーが出るときは、getParamのパラメータの渡し方を確認する。

自分の場合、引数の渡し方が間違っていた。

取得したいクエリ名を文字列として渡していなかったため、上記エラーが出た。

(getParam(id,.. と渡していた)

getParam('id',...と修正することで解決。