※既存の別パラメーターは削除不可
IE 以外で良いなら location.queryを処理できそうですよ。
MDN URLSearchParams
IEでは 文字列 オブジェクトの相互変換を考える必要があります。
?param=value¶m2=value2&... のようなフォーマットは
paramN, valueN 部分が URL 用にエンコードされているものとして考える。
コードスニペットは次のような感じでしょうか。
javascript
1function parseQueryString ( qs ) {
2 var rslt = {};
3 var pairs = qs.substring(1).split("&");
4 for( var i=0,l=pairs.length; i<l; ++i ) {
5 pair = pairs[i].split("=");
6 rslt[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
7 }
8 return rslt
9}
10
11function stringifyQueryString ( oj ) {
12 var rslt = [];
13 for( var key in oj ) {
14 rslt.push( encodeURIComponent(key) + "=" + encodeURIComponent(oj[key]) );
15 }
16 return "?" + (rslt.join("&"));
17}
注意点は
- input[type=checkbox]のような keyが重複されるケースには対応していません
- デバッグしてません
ご質問にある hoge.com?test のような = がないパターンにも対応していませんが、それぞれの for ループ内を弄れば対応できるのではないでしょうか。
退会済みユーザー
2020/03/20 11:20
2020/03/20 11:44
退会済みユーザー
2020/03/20 13:34