JavaScript で URL のクエリパラメータを操作する方法
はじめに
JavaScript で URL のクエリパラメータ部分を操作する方法を調べた。
TL;DR
const url = new URL(location)
で初期化url.searchParams.set("hoge", "fuga")
などで設定url.href
やurl.toString()
で設定後の URL を出力
目次
環境・条件
1 | $ sw_vers |
詳細
URL.searchParams を使うことで、簡単に操作ができる。
Qiita で test
で検索した結果(いいね順) を例に試していく。
初期化
new URL(location)
で初期化。
1 | const url = new URL(location); |
どんな変数やメソッドがあるか確認してみる。
1 | url.toString(); |
searchParams で操作する
searchParams
で様々な操作ができる。中身は URLSearchParams
らしい。
URL
インターフェースのsearchParams
プロパティは、URL に含まれる GET クエリ引数にアクセスできるURLSearchParams
オブジェクトを返します。
できる操作一覧、get
, set
, delete
, has
あたりだけおさえておけば良さそう。
append()
: 指定されたキーと値のペアを新しい検索パラメーターとして追加します。delete()
: 指定された検索パラメーターとその値を、検索パラメーターのリストから削除します。entries()
: このオブジェクトに含まれる全てのキーと値のペアを列挙するためのiterator
を返します。get()
: 指定された検索パラメーターに対応する最初の値を返します。getAll()
: 指定された検索パラメーターに対応する全ての値を返します。has()
: 指定された検索パラメーターが存在するかを表すBoolean
値を返します。keys()
: このオブジェクトに含まれる全てのキーと値のペアのキーを列挙するiterator
を返します。set()
: 指定された検索パラメーターに対応する値を設定します。複数の値が存在していた場合、それらは削除されます。sort()
: 全てのキーと値のペアを、キーを基準にソートします。toString()
: URL で使用するのに適したクエリー文字列を返します。values()
: このオブジェクトに含まれる全てのキーと値のペアの値を列挙するiterator
を返します。
get: パラメータの確認
クエリパラメータの値を取得する。クエリが存在しない場合は null
を返却。
1 | url.toString(); |
set: パラメータの設定(追加/更新)
クエリパラメータを設定(追加 or 更新)する。
1 | url.toString(); |
delete: パラメータの削除
クエリパラメータを削除する。存在しないものを指定しても、エラーにはならない。
1 | url.toString(); |
has: パラメータの確認
クエリパラメータの有無を確認する。
1 | url.toString() |
まとめ
const url = new URL(location)
で初期化url.searchParams.set("hoge", "fuga")
などで設定url.href
やurl.toString()
で設定後の URL を出力
その他・メモ
クエリパラメータを変更した後に location.href = url.toString()
とかすれば移動できて便利。
参考文献
- URL.searchParams - Web API | MDN
- URLSearchParams - Web API | MDN
- How to replace url parameter with javascript/jquery? - Stack Overflow
- URLSearchParamsによる簡単URL操作 - Qiita
- URLSearchParams という便利な機能が増えてた
関連記事
- jQuery Select2 で、初期値の設定と選択状態のクリア
- axios で添付ファイルありのリクエスト(multipart/form-data の POST)
- JavaScript で画像をローカルにダウンロード
- JavaScript で複数画像を zip に圧縮してローカルにダウンロード
- HTML img タグで画像が 404 エラーのときに代替画像を表示する方法
- mailto リンクで 宛先/CC/BCC/件名/本文 を指定 (JavaScript サンプルあり)
- Laravel で現在の URL 取得方法まとめ
- Laravel で Cookie を使う(参照/設定/削除)