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,您也希望选择位于“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 回答