2013-04-22 20 views
14

Jaki jest preferowany sposób w JavaScript do dynamicznego tworzenia elementów opcji DOM? Znalazłem zarówno konstruktora opcji i wariant createElement używany w rzeczywistym kodzie tak:Dynamicznie tworzyć elementy opcji w JavaScript

var option = new Option(text, value); 

a to:

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

Czy są jakieś wady/problemy ze zgodnością z żadnej z tych metod? Czy istnieją inne metody dynamicznego tworzenia opcji, które z pewnych względów powinny być preferowane?

Odpowiedz

11

Nie ma różnic między dwiema metodami, które znam. Korzystanie z konstruktora Option umożliwia wygodne ustawienie wartości i tekstu opcji, ale można to zrobić, korzystając z właściwości value i text.

Nie mogło być sposobem innerHTML, ale IE8 i starsze nie trudno na to ...

+1

Chociaż nie będzie to miało wpływu na kod, istnieje niewielka różnica. Użycie 'var option = new Option();' spowoduje, że 'option' będzie instancją obiektu' Option', a 'opcja instanceof Option' to' true', podczas używania 'var option = document.createElement ('option'); 'spowoduje, że' option' będzie literałem, a nie instancją obiektu 'Option', stąd' opcja instanceof Opcja' to 'false'; Chociaż oba zostaną utworzone z tego samego 'konstruktora' i' option.constructor' będzie 'funkcją HTMLOptionElement()'. – Nope

1

Zauważyłem na przykład, że za pomocą nowej opcji() nie działa dobrze pod IE9, gdzie pracuje w IE10 i IE11. Niedawno wróciłem do oryginalnego kodu i cofnąłem zmianę, którą ktoś zrobił, aby wrócić za pomocą document.createElement ("opcja"), aby IE9 działał.

+0

To nie jest całkowicie dokładne. Tam, gdzie pracuję, istnieje duży zbiór starszego kodu opracowanego dla IE6, który wykorzystuje nową opcję(). Być może jest inny problem w kodzie, który uniemożliwił działanie. –

Powiązane problemy