1

我正在尝试通过 javascript 操作下拉列表,但似乎每次单击按钮时都会得到此代码:

类型错误:objDropDownMenu.options 未定义

objDropDownMenu.options[1].selected = true;

这是我的代码:

<FORM NAME="myform" ACTION="" METHOD="GET">
<SELECT class="select diff_data" style="WIDTH: 165px" name=CarPick>
<OPTION value=1>Audi</OPTION>
<OPTION value=2>BMW</OPTION>
<OPTION value=3>Mercedes</OPTION>
</SELECT>

<INPUT TYPE="button" NAME="button2" Value="Write" onClick="writeText(this.form)">
</FORM>

<SCRIPT LANGUAGE="JavaScript">
var objDropDownMenu = document.getElementsByName("CarPick");



function writeText (form) {
    objDropDownMenu.options[30].selected = true;
}
</SCRIPT>

安宇知道为什么?谢谢!

4

2 回答 2

3

getElementsByName总是返回一个arrayof objects

所以你必须使用: objDropDownMenu[0].options[30].selected = true

解决此问题的更好方法是为您的选择设置一个ID,然后使用document.getElementById('yourid')它始终只返回一个对象(因为该 ID 在 HTML 文档中应该始终是唯一的)。

于 2013-02-04T14:55:06.587 回答
1

我不确定您的代码是否只是一个示例,但如果不是,则有许多不匹配的名称。让我们解决这个问题:

<FORM NAME="myform" ACTION="" METHOD="GET">
<SELECT class="select diff_data" style="WIDTH: 165px" name="CarPick">
<OPTION value="1">Audi</OPTION>
<OPTION value=2>BMW</OPTION>
<OPTION value=3>Mercedes</OPTION>
</SELECT>

<INPUT TYPE="button" NAME="button2" Value="Write" onClick="writeText(this.form)">
</FORM>

<SCRIPT LANGUAGE="JavaScript">
var objDropDownMenu = document.getElementsByName("CarPick")[0];   //It is get elementS - all alements with that name are returned



function writeText (form) {
    objDropDownMenu.options[2].selected = true;  //Here I wonder if 30th entry exists, 2 surelly does
}
</SCRIPT>
于 2013-02-04T14:59:20.717 回答