2012-03-23 15 views
1

我正在研究一個腳本,該腳本從下拉選擇列表中的選定選項抓取值並將其分配給對象。我遇到的唯一問題是它說我有一個空對象。使用普通javascript抓取選擇值DOM

的.js文件如下:

var s = document.getElementById('mode'); 
alert(s.options[s.options.selectedIndex].value); 
function selectValue(){ 

    yo.newSelect(s.options[s.options.selectedIndex].value); 
    return true; 
} 

的HTML如下:

<div id="text_editing"> 
     <form action="javascript:;" method="post" onsubmit="editHomePage()"> 
     <select name="CYD" id="mode" onchange="selectValue()"> 
     <option value="Home">Home</option> 
     <option value="About">About</option> 
     <option value="Contact">Contact</option> 
     </select> 
<textarea name="sexyText" row="500" col=500">  
</textarea> 
<input value="submit" name="text_submit" type="submit" onclick="selectValue()"> 
     </form> 

我只是想找純JS的解決方案。我對使用jQuery這樣的小站點不感興趣。

+0

1)在是什麼瀏覽器,你測試此? - 2)NULL對象是Alert框的結果? – 2012-03-23 00:19:24

+0

Chrome。警報框根本不會彈出。我從firebug lite獲得這個信息。 – VinceOmega 2012-03-23 00:32:48

回答

2

如果所有選項都有一個值,你可以簡單的寫:

alert(s.value); 

這將返回第一個選項(所以不適合與一個以上的選擇了多個選擇)的值。

順便說一下,從你的聽衆,你可以這樣做:

<input type="submit" onclick="selectValue(this)"> 

然後在功能:

+0

你提到的第一種方法我已經在不同的腳本上做過了,但是使用了數字並且它能夠處理它們。我可能會這樣做。我試着用你提到的另一種方法,但它只是告訴我'form'是未定義的。在那一刻,我舉起雙手,使我的價值觀像以前一樣。 – VinceOmega 2012-03-23 03:29:57

+0

表單中的所有表單控件都有一個* form *屬性,用於引用它們所在的表單。如果它們不在表單中,則它將不具有有用的值。 – RobG 2012-03-23 05:42:14

1

看起來像最初一樣,沒有選擇任何選項;因此,當頁面第一次加載時,s.options[s.options.selectedIndex]將爲空。

我會推薦使用Firefox的Firebug插件來瀏覽你的代碼;您可以使用調試器輕鬆識別這些類型的問題。

+0

我實際上已將其用於Chrome。我嘗試了你所說的做法,那就是默認選擇「selected =」選項中的一個,但那也沒有解決。 – VinceOmega 2012-03-23 00:30:37

+0

使用螢火蟲,你應該能夠知道哪個對象爲空,並且selectedIndex的值是多少 – RMorrisey 2012-03-23 00:36:49

+0

是的,我檢查了Chrome和Firefox上的Firebug上的DOM標籤,它告訴我s是空的。我沒有找到填充字符串值的方法,所以我只是創建了數值並遵循了RobG的建議。感謝你們倆! – VinceOmega 2012-03-23 03:47:11