0

これが私が持っているものです

if(condition1) {
     location.href = location.href+'/?site_type=normal';
}
else if(condition2) {
    location.href = location.href+'/?site_type=other';
}

もちろん、location.hrefにすでにクエリ変数が含まれている場合は、それが問題になります。

する必要がある

  1. クエリ文字列から変数を検索します
  2. site_typeがすでに存在する場合は、値を「normal」または「other」に置き換えます。
  3. 新しいsite_typeでURLを再構築します

編集:私はすべての種類のURLを説明する必要があることがわかりました:

  • domain.com
  • domain.com/path/to/sth/
  • domain.com/?site_type=normal
  • domain.com?var = 123&foo = 987
  • domain.com/path/?site_type=normal&var=123&foo=987

だから、これが私が思いついたものです、提案は歓迎します:

var searchstring = window.location.search;
var url = window.location.href;

console.log('search: ' +  searchstring);
console.log( 'url: ' +  url);
// strip search from url
url = url.replace(searchstring,"");
console.log( 'url: ' +  url);
//strip site_type from search
searchstring = searchstring.replace("&site_type=normal","")
                        .replace("&site_type=other","")
                        .replace("?site_type=normal","")
                        .replace("?site_type=other","")
                        .replace("?","")
                        ;
console.log('search: ' +  searchstring);
if(searchstring != ''){searchstring = '&' + searchstring;}
var final = url + '?site_type=normal' + searchstring;
final = final.replace("&&","&");
console.log('final: ' +  final);
4

3 に答える 3

2

を使用してクエリ文字列に直接アクセスできますwindow.location.searchここにあるこの正規表現トリックを使用して、オブジェクトに変換できます。

var queryString = {};
window.location.search.replace(/([^?=&]+)(=([^&]*))?/g, function($0, $1, $2, $3) {
  queryString[$1] = $3; }
);

次に、適切にsite_typeオンに設定しqueryStringます。

queryString["site_type"] = "normal";

最後に、それを文字列に変換し直して、window.location.search.

var searchString = "";
for ( q in queryString ) {
  searchString+="&" + q + "=" + queryString[q];
}
window.location.search = searchString;
于 2013-01-09T01:26:50.930 に答える
0

これを行う方法は次のとおりです。

//remove existing param and append new one..
var newHref = window.location.href.replace(window.location.search,"") + '?site_type=other';

//change href
window.location.href = newHref;

置き換えたいパラメーターが 1 つある場合にのみ機能します。それ以外の場合は、すべてのパラメーターが削除されます。

于 2013-01-09T01:24:28.000 に答える
0

たとえば、あなたが持っている場合

yourpage.com/?site_type=normal

そして、あなたはそれらをクリアすることができる変数をクエリするのではなく、ウェブサイトだけが必要です

var novars= location.href.replace(window.location.search,"")

この場合 novars = youroage.com

変数を取得するだけで、次のことができます。

var site_type = window.location.search.replace("?site_type=","");

ここで、通常のサイトであるか他のサイトであるかに関係なく、site_type の値を取得します。

この場合、変数site_type = "normal"

URLを再構築するには、新しいsite_typeを追加するだけです

location.href = novars+"?site_type=normal"

また

location.href = novars+"?site_type=other"
于 2013-01-09T01:31:53.763 に答える