我有这个标记
<form name="sortbyformtop">
<select onchange="location.href=sortbyformtop.sortbyselecttop.options[selectedIndex].value" id="sortbyselecttop">
<option value="/Search"></option>
<option value="/Search?sortby=accommodationtype">Accommodation type</option>
...
</select>
</form>
每当我选择下拉列表中的一个选项时,我在Firebug中遇到此Javascript错误:
TypeError: sortbyformtop.sortbyselecttop is undefined
这种事情在某种程度上是否可行?
答案 0 :(得分:4)
尝试
location.href= document.getElementById('sortbyselecttop').options[document.getElementById('sortbyselecttop').selectedIndex].value;
或很快
location.href= this.options[this.selectedIndex].value;
因为该上下文中的this
等同于document.getElementById('sortbyselecttop');
selectedIndex
需要绑定到特定的select元素(它是select本身的属性),否则你正在寻找一个名为selectedIndex
的全局(未定义)变量
答案 1 :(得分:1)
而不是sortbyformtop.sortbyselecttop
给this
或document.getElementById('sortbyselecttop')
。
document.getElementById('sortbyselecttop').options[document.getElementById('sortbyselecttop').selectedIndex].value
或者
this.options[this.selectedIndex].value
答案 2 :(得分:1)
较短的版本:
location.href = this.options[this.selectedIndex].value
答案 3 :(得分:0)
为什么要在内联事件处理程序中执行此操作?
我确信你可以做你想要做的事情 - 我认为你的select元素可能需要一个'name'属性而不是ID,但是有一个单独的函数可能更容易你更灵活一点 - 然后从你的事件处理程序调用函数。
onchange="doSomething();"