1

私は<select>タグを持っています

ユーザー onchange をリダイレクトしたい

コードを取得しましたが、正常に動作します

コードは

<select onchange="if (this.value) window.location.href=this.value">
<option value="&s=1">1</option>
<option value="&s=2">2</option>
<option value="&s=3">3</option>
<option value="&s=4">4</option>
</select>

ここでの問題は次のとおりです。

現在のリンクは次のとおりです。http://anlink.com/page.php?categ=4&subc=2

オプションを変更したとき

にリダイレクトされましたhttp://anlink.com/&s=1

しかし、私はそれをリダイレクトしたい

http://anlink.com/page.php?categ=4&subc=2&s=1

だから、私はこのようなものにjavascriptコードを編集したい

if (this.value) window.location.href=
http://anlink.com/page.php?categ=4&subc=2 + this.value

このコードは試していませんが、失敗すると思います

4

2 に答える 2

2

これはあなたのために働くはずです:

<script type="text/javascript">
function changeLocation(field) {
    loc = String(window.location);
    newLoc = loc.replace(/\&s=\d$/gi, "") + field.value;
    window.location = newLoc;
}   
</script>
<select onchange="changeLocation(this)">
<option value="&s=1">1</option>
<option value="&s=2">2</option>
<option value="&s=3">3</option>
<option value="&s=4">4</option>
</select>

のインスタンスを&s=数字で置き換え、その後は何も置き換えません。次に、新しい値を追加します。この理由は、 a&s=がまだ存在しない場合です。

URL の "s" に基づいて "s" の値を変更したい場合 (つまり、URL にあるページをロードするときに&s=3、select を "3" にもしたい場合)、次のようにします。変更:

onload="adjustS()"体に加える

選択にIDを追加します(「s」を使用しました)

次の関数を追加します。

function adjustS() {
    sLoc = String(String(window.location).match(/\&s=\d$/gi)).replace(/\&s=/gi, "");
    document.getElementById("s").selectedIndex = Number(sLoc)-1;
}
于 2012-09-01T03:29:34.370 に答える
0

試してみてください:

window.location.href += this.value

編集:

var href = window.location.href;
var re = /&s\=\d$/;
if (re.test(href)) {
  window.location.href = href.replace(re, this.value);
} else {
  window.location.href += this.value;
}
于 2012-09-01T03:05:59.327 に答える