2013-04-22 6 views
14

Qual è il modo preferito in Javascript per creare dinamicamente elementi di opzioni DOM? Ho trovato sia il costruttore Option e la variante createElement utilizzato in codice vero e proprio in questo modo:Creare dinamicamente elementi di opzione in Javascript

var option = new Option(text, value); 

e questo:

var option = document.createElement('option'); 
option.text = text; 
option.value = value; 

Ci sono degli svantaggi/problemi di compatibilità con qualsiasi di questi metodi? Inoltre, ci sono altri metodi per creare opzioni dinamicamente che dovrebbero essere preferite a quanto sopra per alcune ragioni?

risposta

11

Non ci sono differenze tra i due metodi che conosco. L'utilizzo della funzione di costruzione Option consente di impostare facilmente il valore e il testo dell'opzione, ma è possibile fare lo stesso utilizzando le proprietà value e text.

Ci avrebbe potuto essere il modo innerHTML, ma IE8 e anziani non riuscire molto su questo ...

+1

Anche se non ha alcun effetto sul codice, c'è una piccola differenza. Usando 'var option = new Option();' risulterà in 'option' come istanza dell'oggetto' Option' e 'option instanceof Option' è' true', mentre si usa 'var option = document.createElement ('option')); 'risulterà in' option' come letterale e non come istanza dell'oggetto 'Option', quindi' option instanceof Option' è 'false'; Sebbene entrambi siano stati creati dallo stesso 'costruttore' e' option.constructor' sarà 'function HTMLOptionElement()'. – Nope

1

Ho notato per esempio che l'utilizzo di nuova Opzione() non funziona bene sotto IE9 dove opera in IE10 e IE11. Recentemente sono tornato al codice originale e ho ripristinato la modifica che qualcuno ha fatto per tornare indietro usando document.createElement ('opzione') affinché IE9 funzioni.

+0

Questo non è del tutto preciso. Dove lavoro c'è un ampio set di codice legacy sviluppato per IE6 che utilizza la nuova Option(). Forse c'è un altro problema nel tuo codice che gli impedisce di funzionare. –