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>

ドロップダウンリストでオプションの1つを選択すると、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特定のselect要素(select自体のプロパティ)に関連付ける必要があります。そうでない場合は、次のようなグローバル(未定義)変数を探します。selectedIndex

于 2012-09-20T10:53:35.580 に答える
1

またはをsortbyformtop.sortbyselecttop与える代わりに。thisdocument.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ではなくselect要素に「名前」属性が必要かもしれませんが、別の関数を使用する方が簡単かもしれません柔軟性が向上します。代わりに、イベント ハンドラーから関数を呼び出します。

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