输入错误:x未定义

时间:2012-09-20 10:52:03

标签: javascript html

我有这个标记

<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

这种事情在某种程度上是否可行?

4 个答案:

答案 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.sortbyselecttopthisdocument.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();"