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