javascriptはURLのパラメータを取得して設定します.
3276 ワード
正誤版
function getQuery(key, url) {
url = url || window.location.href;
if (url.indexOf('#') !== -1)
url = url.substring(0, url.indexOf('#'));
var rts = [], rt;
var queryReg = new RegExp('(^|\\?|&)' + key + '=([^&]*)(?=&|$|#)', 'g');
while ((rt = queryReg.exec(url)) != null) {
rts.push(decodeURIComponent(rt[2]));
}
if (rts.length == 0) return null;
if (rts.length == 1) return rts[0];
return rts;
}
function setQuery(key, value, url) {
url = url || window.location.href;
var hash = '';
if (url.indexOf('#') !== -1)
hash = url.substring(url.indexOf('#'));
url = url.replace(hash, '');
url = url.replace(new RegExp('(^|\\?|&)' + key + '=[^&]*(?=&|#|$)', 'g'), '');
value = isArray(value) ? value : [value];
for (var i = value.length - 1; i >= 0; i--) {
value[i] = encodeURIComponent(value[i]);
}
var p = key + '=' + value.join('&' + key + '=');
return url + (/\?/.test(url) ? '&' : '?') + p + hash;
}
拡張版は、同じ名前のパラメータをサポートします.function getQuery(key, url) {
url = url || window.location.href;
var rts = [], rt;
var queryReg = new RegExp('(^|\\?|&)' + key + '=([^&]*)(?=&|$|#)', 'g');
while ((rt = queryReg.exec(url)) != null) {
rts.push(decodeURIComponent(rt[2]));
}
if (rts.length == 0) return null;
if (rts.length == 1) return rts[0];
return rts;
}
function setQuery(key, value, url) {
url = url || window.location.href;
url = url.replace(new RegExp('(^|\\?|&)' + key + '=[^&]*(?=&|$|#)', 'g'), '');
value = value.splice ? value : [value];
for (var i = value.length - 1; i >= 0; i--) {
value[i] = encodeURIComponent(value[i]);
}
var p = key + '=' + value.join('&' + key + '=');
return url + (/\?/.test(url) ? '&' : '?') + p;
}
正規表現を使うfunction getQuery(key, url) {
var reg = new RegExp('^\\S*(\\?|&)' + key + '=([^&]*)\\S*$');
var l = url || window.location.href;
if (reg.test(l)) {
return decodeURIComponent(l.replace(reg, '$2'));
} else {
return null;
}
}
function setQuery(key, value, url) {
var reg = new RegExp(key + '=[^&]*(?=&|$)');
var l = url || window.location.href;
if (reg.test(l)) {
return l.replace(reg, key + '=' + encodeURIComponent(value));
} else {
return l + (/\?/.test(l) ? '&' : '?') + key + '=' + encodeURIComponent(value);
}
}