2011-03-03 36 views
4

有誰知道如何從javascript的所有<option>中獲取值?使用javascript從<option>獲取值

例如:

<select name="test" id="test"> 
    <option value="1">one</option> 
    <option value="2">two</option> 
    <option value="3">three</option> 
</select> 

我如何使用JavaScript來獲取所有的值從<option>和輸出:

1 
2 
3 

回答

5

派:

var opts = document.getElementById('test').options; 
var vals = []; 
for(var i = 0, j = opts.length; i < j; i++) 
    vals.push(opts[i].value); 
0
var options = document.getElementById('test').options; 

https://developer.mozilla.org/en/DOM/HTMLOptionsCollection

編輯:爲了完整

var options = document.getElementById('test').options; 
var values = []; 
for (var i = 0; i < options.length; i++) { 
    var option = options.item(i); 
    var value = option.value || option.text; // For IE 
    values.push(value); 
} 

從內存中,IE瀏覽器的一些版本不爲value財產,如果沒有value屬性設置返回選項的文本內容。

+0

這不給你值... – eyelidlessness

+2

@eyelidlessness我更多的是「授人以漁」類型的球員;) – Phil

+1

這很好,我想,除了我不認爲它必然是網站的精神。無論如何,最好解釋一下,當你發佈一個實際上並不能解決問題的答案時,你就是這麼做的。 – eyelidlessness

0

,你可以,如果你使用jQuery它可以是這樣的

 
var opt = $('#idOfYourSelect options'); 

for (var i = 0, ii = opt.length; i < ii; i++) { 
    console.log(opt[i].value); 
} 
2

用JavaScript做這樣的

 
var opt = document.getElementById('idOfYourSelect').options; 

for (var i = 0, ii = opt.length; i < ii; i++) { 
    console.log(opt[i].value); 
} 

可以使用Array.prototype.map代替顯式循環。

var options = document.getElementById('test').options; 

var values = Array.prototype.map.call(options, function(val) { 
    return val.value; 
}); 

不過你得把它添加到Array.prototype如果你支持舊版瀏覽器。

有在MDC的實現可以使用:


if (!Array.prototype.map) 
{ 
    Array.prototype.map = function(fun /*, thisp */) 
    { 
    "use strict"; 

    if (this === void 0 || this === null) 
     throw new TypeError(); 

    var t = Object(this); 
    var len = t.length >>> 0; 
    if (typeof fun !== "function") 
     throw new TypeError(); 

    var res = new Array(len); 
    var thisp = arguments[1]; 
    for (var i = 0; i < len; i++) 
    { 
     if (i in t) 
     res[i] = fun.call(thisp, t[i], i, t); 
    } 

    return res; 
    }; 
} 
+0

因此,肯定我與JavaScript有多失去聯繫。真棒回答。 – Phil

+0

@菲爾:謝謝。 :o)當所有酷炫的新功能得到廣泛的支持時,它會很好。 – user113716

0

我電子書籍對於查詢的這一個jQuery庫&使用。每()方法配合使用在定義的「選擇」下的所有「選項」標籤。

0

我想所有的價值和它的標籤,所以我用下面的代碼

var opts = document.getElementById('state_of_birth').options; 
var vals = []; 
var txt = []; 
for(i=0,j=opts.length;i<j;i++) 
{ 
    vals.push(opts[i].value); 
    txt.push(opts[i].text); 
} 
var k=i; 
for(i=0;i<k;i++) 
{ 
    window.alert(vals[i]); 
    window.alert(txt[i]); 
}