2010-02-26 110 views
4

有了這個字段集:設置選項值與getElementsByName()

<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> 

感謝。

+1

你'' 2010-02-26 18:36:12

回答

7

這是有點不清楚你在問什麼。您是否只是要求在索引2處選擇該選項?

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

或者,你是否在指數2更改選項的值?

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

document.getElementsByName('death')[0] .selectedIndex = 2;很好。謝謝 – volvox 2010-02-26 18:55:51

2

你需要操縱你的選擇對象的selected屬性,嘗試

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

在英語中,這個讀「設置所選的選項與名稱在文檔中的第一個元素的第二個選項「死亡'」。

修復您的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> 
+0

感謝您的修復。你的建議也很好。 – volvox 2010-02-26 19:01:28

0

document.getElementsByName('death')[2]返回第三個元素命名death - 但你只能有一個同名的一個元素。相反,你想你想它的第三個選項命名death(即一個索引0)的第一要素,然後:document.getElementsByName('death')[0].options[2].value = ...

1

你可以做到這一點使用jQuery ...很容易...

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

使用javascript框架絕對更好。但是,我想指出,他的HTML使用的是名稱而不是ID。 – HackedByChinese 2010-02-26 18:43:19

+1

我的錯誤。韓國社交協會。 – 2010-02-26 18:55:52

+0

如果沒有ID(或者,我實際上可以添加ID) – volvox 2010-02-26 20:58:58

0

這裏有一個如何與getElementsByName訪問特定的選項值警報例如

alert(document.getElementsByName('death')[0].options[0].value); // will return Dead 
alert(document.getElementsByName('death')[0].options[1].value); // will return NotDead