1

我有这个标记

<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

4 回答 4

4

尝试

location.href= document.getElementById('sortbyselecttop').options[document.getElementById('sortbyselecttop').selectedIndex].value;

或不久

location.href= this.options[this.selectedIndex].value;

因为this在这种情况下相当于document.getElementById('sortbyselecttop');


selectedIndex需要绑定到特定的选择元素(它是选择本身的属性),否则您正在寻找一个名为的全局(未定义)变量selectedIndex

于 2012-09-20T10:53:35.580 回答
1

而不是sortbyformtop.sortbyselecttopthisdocument.getElementById('sortbyselecttop')

document.getElementById('sortbyselecttop').options[document.getElementById('sortbyselecttop').selectedIndex].value

或者

this.options[this.selectedIndex].value
于 2012-09-20T10:54:11.807 回答
1

一个较短的版本:

location.href = this.options[this.selectedIndex].value
于 2012-09-20T10:57:24.480 回答
0

您为什么要在内联事件处理程序中执行此操作?

我确信可以做你想做的事情 - 我认为你可能需要在你的选择元素上使用一个“名称”属性而不是一个 ID,但是有一个单独的函数可能更容易给你一点更大的灵活性 - 然后从您的事件处理程序中调用该函数。

onchange="doSomething();"
于 2012-09-20T10:55:25.953 回答