我有<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
我没有尝试这段代码,但我认为它会失败
答案 0 :(得分: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=
的任何实例替换为后面带有数字的任何实例。然后它添加新值。原因在于&s=
尚不存在。
如果您希望根据URL中的“s”更改“s”值(即,当您在URL中加载&s=3
页面时,您希望选择为“3” “同样),进行以下更改:
将onload="adjustS()"
添加到正文
为select(我使用“s”)
添加一个id添加以下功能:
function adjustS() {
sLoc = String(String(window.location).match(/\&s=\d$/gi)).replace(/\&s=/gi, "");
document.getElementById("s").selectedIndex = Number(sLoc)-1;
}
答案 1 :(得分: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;
}