onclick重定向到不同的URL

时间:2012-11-28 01:57:40

标签: javascript

我正在创建一个下拉菜单,将用户推送到选定的网址。在列表中,我有几个值设置为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>

2 个答案:

答案 0 :(得分: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的{​​{1}}。现在因为列表索引从option开始,所以当选择第一个(或0 th 索引)项时,您获得了预期结果。但是所有其他项目都通过了0测试并被重定向。

使用

selectedIndex > 0

基本上会检查所选onchange="if (this[this.selectedIndex].value !== '0') document.location.href=this.value;" 的{​​{1}},如果value,它会重定向到它。

答案 1 :(得分:3)

您将它们重定向到网址0,它将其解释为/0。您可能希望通过使用"0"之类的内容进行检查,以确保该值不是this.value !== "0"