URLの文字列にクエリ文字列(URLパラメーター)を追加
URLの文字列にクエリ文字列(URLパラメーター)を追加するには、次のような方法で実装します。
関数定義
JavaScript
var addUrlParam = function(path, key, value, save) {
if (!path || !key || !value) return '';
var addParam = key + '=' + value,
paths = path.split('/'),
fullFileName = paths.pop(),
fileName = fullFileName.replace(/[\?#].+$/g, ''),
dirName = path.replace(fullFileName, ''),
hashMatches = fullFileName.match(/#([^#]+)$/),
paramMatches = fullFileName.match(/\?([^\?]+)$/),
hash = '',
param = '',
params = [],
fullPath = '',
hitParamIndex = -1;
if (hashMatches && hashMatches[1]) {
hash = hashMatches[1];
}
if (paramMatches && paramMatches[1]) {
param = paramMatches[1].replace(/#[^#]+$/g, '').replace('&', '&');
}
fullPath = dirName + fileName;
if (param === '') {
param = addParam;
} else if (save) {
params = param.split('&');
for (var i = 0, len = params.length; i < len; i++) {
if (params[i].match(new RegExp('^' + key + '='))) {
hitParamIndex = i;
break;
}
}
if (hitParamIndex > -1) {
params[hitParamIndex] = addParam;
param = params.join('&');
} else {
param += '&' + addParam;
}
} else {
param += '&' + addParam;
}
fullPath += '?' + param;
if (hash !== '') fullPath += '#' + hash;
return fullPath;
};
使い方
var resultUrl = addUrlParam(path, paramKey, paramValue, save);
引数
引数名 | 型 | 説明 | |
---|---|---|---|
第一引数 必須 |
path | string | 追加元のURL文字列 |
第二引数 必須 |
paramKey | string | 追加するパラメータのキーの名称 |
第三引数 必須 |
paramValue | string | 追加するパラメータの値 |
第四引数 | save | boolean | すでに同じパラメータのキーが存在していた場合に上書きをするかどうか 設定値は上書きする場合はtrue、上書きせず追加する場合はfalse(デフォルト) |
戻り値
追加元のURLに結合されたURLの文字列を返します。
サンプルコード
JavaScript
var sampleElement = document.getElementById('sample'),
hrefAttrValue = sampleElement.getAttribute('href');
var setUrlValue = addUrlParam(hrefAttrValue, 'q', 'サンプル');
sampleElement.setAttribute('href', setUrlValue);