2009-10-08 9 views
14

ho una casella di selezione:Ottenere il valore di una casella di selezione in Internet Explorer

<select id="item1" name="Item 1"> 
    <option> </option> 
    <option> Camera </option> 
    <option> Microphone </option> 
    <option> Tripod </option> 
</select> 

E ho questa JavaScript:

var item1= document.getElementById("item1").value; 

item1 mostra sempre vuoto, mai l'opzione selezionata. Tuttavia, questo funziona in .

risposta

23

Utilizzare item.value per tutti i browser tranne quelli molto vecchi (Netscape 4 chiunque?). Il motivo per cui non funziona in questo caso è perché non hai un attributo value nelle opzioni. Dovresti dichiarare il valore per ogni attributo. Ciò che si ha attualmente è solo la proprietà "text", che normalmente viene valorizzata automaticamente ogni volta che non viene dichiarato alcun valore. In alternativa è possibile inserire del codice nell'evento onload della finestra per rendere il "valore" di ciascuna di queste opzioni come "testo".

Un terzo modo è possibile utilizzare il codice qui sotto, che è la vecchia maniera:

var s = document.getElementById('item1'); 
var item1 = s.options[s.selectedIndex].value; 
+0

oops, questo non funziona in IE 6, ma in IE 8 :( – bmw0128

+0

dovrebbe funzionare bene in IE6 - quale errore si ottiene? – Greg

+1

nessun errore di per sé, ho un controllo che controlla un valore, e il valore non è mai lì – bmw0128

3

Come un addendum per rispondere 1 #, fare attenzione come < selezionare> .selectedIndex può essere un po '-1 i tempi che generano un'eccezione quando passati a < selezionare> .options [n]. Come tale, si potrebbe desiderare facciamo un test rapido:

var s = document.getElementById('item1'); 
var item = (-1 != s.selectedIndex)? 
       s.options[s.selectedIndex] : null; 

EDIT

commento di

Per Tim, s.selectedIndex può essere -1 se lo si imposta tramite JavaScript o si crea un vuoto < select > scatola.

+0

Sai quando 'selectedIndex' può essere -1? Non l'ho mai visto. –

+0

L'unico modo in cui 'selectedIndex' può essere -1 è se è stato esplicitamente impostato su -1 tramite JavaScript. –

+0

Tuttavia, ho svettato troppo rapidamente e ora non riesco a rimuoverlo se non lo modifichi. Scusate. –

14

Poiché i tag di opzione non hanno l'attributo "valore" IE6 e IE7 restituiscono una stringa vuota. Si consiglia di leggere il valore dal campo "Testo" dell'oggetto Option in questo modo:

var item1 = s.options[s.selectedIndex].text; 

in voce1 avrete il valore desiderato senza rompere la compatibilità con Firefox e IE 8.

1

il codice per ottenere un vaiable columnName dalla casella di selezione chiamato layerDetails.styleColumn (SELEZIONA variabile ha lo stesso nome e Id), che funziona su tutti i browser ...

var columnName = document.getElementsByName('layerDetails.styleColumn')[0].value; 
if (columnName == null || columnName == '') 
    { 
    columnName = document.getElementById('layerDetails.styleColumn').value; 
    } 

if (columnName == null || columnName == '') 
    { 
    var select = document.getElementById('layerDetails.styleColumn'); 
    columnName= select.options[select.selectedIndex].value; 
    if (columnName == null || columnName == '') 
    { 
    columnName= select.options[select.selectedIndex].text; 
    } 
    } 
Problemi correlati