2013-04-22 17 views
14

動的にDOMオプション要素を作成するには、Javascriptでどのような方法が適していますか?動的にJavascriptでオプション要素を作成する

var option = new Option(text, value); 

と、この:

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

それらのいずれかの方法で任意の欠点/互換性の問題があります。オプションのコンストラクタと、このような実際のコードで使用するのcreateElementバリアントの両方が私を見つけましたか?また、何らかの理由で上記に優先してオプションを動的に作成する方法はありますか?

答えて

11

私が知っている2つの方法に違いはありません。 Optionコンストラクタを使用すると、オプションの値とテキストを便利に設定することができますが、valuetextのプロパティを使用しても同じことができます。

ありinnerHTML方法をされますが、IE8と古いが、これにハード失敗...

+1

コードには何の影響もありませんが、小さな違いがあります。 'var option = new option();'を使うと、 'option'が' Option'オブジェクトのインスタンスになり、 'option instanceof Option'が' true'になり、 'var option = document.createElement( 'option' ); ''オプション 'はリテラルであり、' Option'オブジェクトのインスタンスではないので、 'option instanceof Option'は' false'です。両方とも同じ 'constructor'と' option.constructor'から作成されますが、 'function HTMLOptionElement()'になります。 – Nope

1

たかもしれない、私はそれがIE10で動作する場合)(新しいオプションを使用すると、IE9の下でうまく動作しないこと例えば気付き、 IE11。私は最近、元のコードに戻り、誰かがdocument.createElement( 'option')を使って戻ってきた変更を元に戻し、IE9が機能するようにしました。

+0

これは完全に正確ではありません。私が働いている場所には、新しいOption()を使用するIE6用に開発された一連のレガシーコードがあります。おそらく、あなたのコードに別の問題があり、それが動作しない可能性があります。 –

関連する問題