Help us understand the problem. What is going on with this article?

Typescript(Javascript)でURLクエリパラメーターを更新する

More than 1 year has passed since last update.

URLクエリパラメーターを更新するクラス

※ Typescriptで書いてます。Javascriptの場合は型指定あたりを削除すれば動くと思います。

class MySearchParams {
    static update(key: string, value: string): boolean {
        const params = MySearchParams.toObject();
        params[key] = value;
        const url = "?" + Object.keys(params).map(
            (key: string) => key + "=" + params[key]).join("&");
        history.replaceState('', '', url);
        history.pushState('', '', url);

        return true;
    }

    static get(key: string): string {
        const params: any = MySearchParams.toObject();
        return params[key];
    }

    static toObject(): Object {
        let vars = {}, max: number, hash: any, array: any = "";
        let url = window.location.search;

        if (url.length === 0) {
            return vars;
        }
        hash = url.slice(1).split('&');
        max = hash.length;
        for (let i = 0; i < max; i++) {
            array = hash[i].split('=');
            vars[array[0]] = array[1];
        }

        return vars;
    }
}

使い方は以下のとおり

指定パラメーターの更新

MySearchParams.update(key, value)

全てのパラメーターを連想配列で取得

MySearchParams.toObject()

指定パラメーターの取得

MySearchParams.get(key)

ブラウザのバージョンなどによっては、動作しないかもです。問題点などありましたら、コメントなどで指摘していただけると助かります<m(_ _)m>

m3816
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away