2014-01-24 8 views
6

Ich bin überrascht, ich kann diesen Code nicht online finden!Javascript Schleife durch alle HTML-Select <option>

Wie greife ich auf ALLE ausgewählten Indizes einer Auswahlliste zu? Nicht nur der erste?

HTML:

<select name="trends[]" multiple="multiple" id="trends" size="35"></select>

js:

function moveSelectedTrends() 
{ 
    var selectedTrends = document.getElementById('trends'); 

    for(var i=0; i < selectedTrends.length; i++) 
    { 
     alert(selectedTrends.options[selectedTrends.selectedIndex].value) //ONLY returns the first selected element! 
    } 
} 

Antwort

4

eine einfache Möglichkeit, Schleifen zu vermeiden, ist QSA:

[].forEach.call( document.querySelectorAll('#trends :checked') , function(elm){ 
    alert(elm.value); 
}) 

die ausgewählt Wähler klug genug ist, auf < arbeiten Menüs auswählen> ...

+0

http://jsfiddle.net/gVA37/ Ich dachte, da wäre so etwas. –

+0

Dies war viel mehr skalierbaren Code. Vielen Dank –

11

Verwenden i statt selectedTrends.selectedIndex und testen, ob es selected.

function moveSelectedTrends() { 
    var trends = document.getElementById('trends'), trend, i; 

    for(i = 0; i < trends.length; i++) { 
     trend = trends[i]; 
     if (trend.selected) { 
      alert(trend.value); 
     } 
    } 
    } 
+0

bekam den Job getan! –

+2

Leider funktioniert nicht für sehr große Datensätze. –