JavaScript

最終更新日:
公開日:

レシピ

URL

URLのGETパラメータの値を更新する

指定したGETパラメータの値を更新する方法について解説します。

この記事のポイント

  • GETパラメータの値を更新するときはsetメソッドを使う
  • setメソッドは同じパラメータ名が複数あるときは1つだけ残して他は削除する
  • GETパラメータの値を取得するときはgetメソッドgetAllメソッドを使う

GETパラメータの値を更新する

URLに含まれるGETパラメータの値を更新するときはURLSearchParamsオブジェクトsetメソッドを使います。

以下の例は、URLのGETパラメータ「username」と「mode」に対して新しい値をセットして更新します。
赤字の箇所で値の更新を実行しています。

index.js

// 対象URL:http://js.localhost/url.html?username=test&mode=data1&mode=data2

// URLを取得
let url = new URL(window.location.href);

// URLSearchParamsオブジェクトを取得
let params = url.searchParams;

if( params.get('username') ) {
	params.set('username','taro');
	console.log(params.get('username')); // taro
}

if( params.get('mode') ) {
	params.set('mode','view');
	console.log(params.getAll('mode')); // ['view']
}

if文の条件式では更新したいGETパラメータがあるかを確認しています。
ここで指定したパラメータ名のGETパラメータがある場合のみ、値の更新を実行します。

ただし、setメソッドは更新するパラメータ名がない場合は新しく追加をするので、もともとGETパラメータ名が存在しない場合についてもエラーが出ることはありません。

対象URLには「mode」が2つありますが、同じパラメータ名が複数ある場合はsetメソッドを実行すると値を更新する1つのパラメータだけを残して他は削除します。