2

以下のコードは値を出力しません。

function go(x)
{
   alert(x.options.selectedIndex.value);
   //location=document.menu.student.options[document.menu.student.selectedIndex].value
}

これはhtmlコードです

<select name="student" onChange="go(this)">
    <option selected> Student </option>
    <option value="http://www.cnet.com">Attendence</option>
    <option value="http://www.abc.com">Exams</option>
</select>
4

1 に答える 1

5

selectedIndexvalueは数値であり、プロパティはありません。

(あなたのように)単一選択のみを許可する要素がある場合select、その値を取得する最も簡単な方法はselect要素のvalueプロパティです:

function go(x) {
    alert(x.value);
}

サポートしたいブラウザで動作することを再確認しますが、MaryAnne(コメントを参照)は現在のすべての主要なブラウザをチェックし、IE6、IE7、Firefox 3.6(古いブラウザなど)をチェックしました。仕事。DOM2 HTML(上記のリンク)で指定されているため...

しかし、再selectedIndex、あなたはおそらく意味しました:

function go(x) {
    alert(x.options[x.selectedIndex].value);
}

私はおそらくそれをもう少し進めて、より防御的にするでしょう:

function go(x) {
    var option = x.options[x.selectedIndex];
    if (option) {
        alert(option.value);
    }
}

...また

function go(x) {
    var option = x.options[x.selectedIndex];
    var value = option && option.value;
    alert(value); // Alerts "undefined" if nothing is selected
}

...選択されたオプションがない場合(この場合はにoptionなりますundefined)、特定のマークアップとコードでは、change何も選択されていない場合にイベントが発生するユーザーエージェントを認識していません。少なくとも、私はそうは思いません—「私は思う」が防御的である理由です。:-)

于 2012-06-23T16:27:22.477 に答える