1

我正在创建一个下拉菜单,将用户推送到选定的 url。在列表中,我有几个设置为 0 的值,用于列表中的标题。我已将它们设置为 0,因此它们什么也不做。

这适用于列表中的第一个值为 0 但其他值为 0 的人仍将浏览器重定向到具有相同域和最后 /0 的新网站?我错过了什么?

<select onchange="if (this.selectedIndex > 0) document.location.href=this.value;">
<option value="0" selected="selected">More...</option>
<option value="0">----- Locations  -----</option>
<option value="http://www.location1.com/">location1</option>
<option value="http://www.location2.com/">location2</option>
<option value="http://www.location3.com/">location3</option>
<option value="0">----- Other Locations  -----</option>
<option value="http://www.olocation1.com/">olocation1</option>
<option value="http://www.olocation2.com/">olocation2</option>
<option value="http://www.olocation3.com/">olocation3</option>
</select>
4

2 回答 2

4

将您的代码更改为:

<select onchange="if (this[this.selectedIndex].value !== '0') document.location.href=this.value;">
<option value="0" selected="selected">More...</option>
<option value="0">----- Locations  -----</option>
<option value="http://www.location1.com/">location1</option>
<option value="http://www.location2.com/">location2</option>
<option value="http://www.location3.com/">location3</option>
<option value="0">----- Other Locations  -----</option>
<option value="http://www.olocation1.com/">olocation1</option>
<option value="http://www.olocation2.com/">olocation2</option>
<option value="http://www.olocation3.com/">olocation3</option>
</select>​

演示:http: //jsfiddle.net/pratik136/kWHXX/

为什么?

你的代码:

onchange="if (this.selectedIndex > 0) document.location.href=this.value;"

正在检查列表index中选定option的 。现在,由于列表索引从开始,因此选择第一个(或第0索引)项目0时,您会得到预期的结果。但是所有其他项目都通过了测试并被重定向。selectedIndex > 0

使用

onchange="if (this[this.selectedIndex].value !== '0') document.location.href=this.value;"

基本上检查valueselectedindex的 ,如果是value !== '0',它会重定向到它。

于 2012-11-28T02:01:31.743 回答
3

您将它们重定向到 url 0,它解释为/0. "0"您可能想通过使用类似的东西来检查以确保该值不是this.value !== "0".

于 2012-11-28T01:59:56.447 回答