2011-12-19 12 views
4

ドロップダウンリストに設定する必要があるHTML文字列を含むtxt変数があります。コードは、IEを除く他のすべてのブラウザで正常に動作します。基本コードを以下に示します。いくつかのより多くのコードIEで.innerHTMLを使用してオプション要素を追加する

'theSelector'は私のフォームのための私のselect要素

だから、基本的にIEが出糞、私のリストを生成しないのIDです

document.getElementById('theSelector').innerHTML = txt; 

とwhileループ

。あなたがソースと私がやっているすべてを見たいのであれば、私のウェブページを下に掲載します。サイトがどのように機能するかを知りたいのであれば、そうではない別のブラウザで実行するだけです。それはあなたのリストを生成し、そしてあなたがオプションを追加しようとしているジャレッドさんのコメントされていないことをあなたのコメントに基づいて

http://1wux.com/Resume/signUp.html

+0

のjQueryを使用して、私はしないでくださいIEはあなたに '.innerHTML = '';'をつけてください。 DOMメソッドを使用する必要があります。 –

+0

私が正しく覚えていれば、これはIEで非常に長いバグです。 http://support.microsoft.com/kb/276228このバグレポートは2003年に提出されました。私は一度それに遭遇し、最も簡単な解決策はAdamの答えを使用することです。 – qw3n

答えて

4

、このような何かしてみてください:

var list = document.getElementById('theSelector'); 
var newOp = document.createElement("option"); 
newOp.text = "Txt"; 
newOp.value = "1"; 
list.options.add(newOp); 

EDIT

Per Jaredのコメントでは、次のの場合、パフォーマンスの優位性が少し得られます。

list.options[list.options.length] = newOp; 
+1

デモ:http://jsfiddle.net/ntERa/その方法はいつも私を悩ませました。 –

+0

@JaredFarrish - そのフィドルを作成することを超えて - あなたに+1する - あなたは輝くバッジから離れています:)そして、配列のように、 'push'の代わりに' add'メソッドは通常どれですか? –

+0

IE7-9でも問題なく動作しているようです。 –

3

他にも言及したように、これはIEのすべてのバージョンでのバグです。 @ AdamRackisのソリューションを使用しますが、文字列でHTMLを構築する必要がある場合は、唯一の回避策はouterHTMLで、文字列に<select>を含めるようです。

デモ:http://jsfiddle.net/ThinkingStiff/TWYUa/

HTML:

<select id="select"></select> 

スクリプト:

var options = '<select id="select"><option>one</option><option>two</option></select>'; 
document.getElementById('select').outerHTML = options; 
+0

ありがとう!それが修正されるかどうかはわかります。 –

-1

$('#theSelector').html(txt);

関連する問題