使用getElementsByName()设置选项值

时间:2010-02-26 18:27:08

标签: javascript

拥有此字段集:

<fieldset>
    <legend>[*death]</legend>
    <select name=death  style="width: 120px">
        <option value=Dead>[*died]
        <option value=NotDead>[*alive]
        <option value="" selected>-
    </select>
</fieldset>

我想将[2].value设置为"-"

我尝试过没有取得任何成功:

document.getElementsByName('death')[2].checked = 'true';
document.getElementsByName('death')[2].value = '-';  

相同类型的代码适用于收音机盒,复选框或表单中的其他输入。如何选择选项(不是输入)?

由于

[编辑]当然,适当的字段集是:

<fieldset>
  <legend>[*death]</legend>
    <select name="death"  style="width: 120px">
      <option value="Dead">[*died]</option>
      <option value="NotDead">[*alive]</option>
      <option value="" selected>-</option>
    </select>
</fieldset>

感谢。

5 个答案:

答案 0 :(得分:7)

有点不清楚你在问什么。您只是要求选择索引2处的选项吗?

document.getElementsByName('death')[0].selectedIndex = 2;

或者,您是否要求更改索引2处的选项值?

var d = document.getElementsByName('death')[0];
d.options[2].value = '-';

答案 1 :(得分:2)

您需要操纵选择对象的selected属性,尝试

document.getElementsByName('death')[0].selectedIndex = 1;

在英文中,这里写着“将所选选项设置为文档中第一个元素的第二个选项,名称为'death'”。

修复HTML可能会使您的javascript结果更具可预测性。关闭标记,引用属性值,如下所示:

<fieldset>
  <legend>[*death]</legend>
    <select name="death"  style="width: 120px">
      <option value="Dead">[*died]</option>
      <option value="NotDead">[*alive]</option>
      <option value="" selected>-</option>
    </select>
</fieldset>

答案 2 :(得分:1)

你可以使用jQuery做到这一点......很容易......

j("#death").val(2)

答案 3 :(得分:0)

document.getElementsByName('death')[2]返回名为death的第三个元素 - 但您只有一个具有该名称的元素。相反,您需要名为death的第一个元素(即索引为0的元素),然后您需要第三个选项:document.getElementsByName('death')[0].options[2].value = ...

答案 4 :(得分:0)

以下是如何使用 getElementsByName

访问特定选项值的提示示例
alert(document.getElementsByName('death')[0].options[0].value); // will return Dead
alert(document.getElementsByName('death')[0].options[1].value); // will return NotDead