私は選択フィールドを生成し、生成時に適切なオプションを選択する小さなスクリプトを用意しています。IEでプログラムでオプションを選択する
options.each(function (option) {
var optionString = "<option id='" + option.id + "' value='" + option.value + "'>" + option.text + "</option>";
$('selectField').insert(optionString);
if(option.selected) {
toBeSelected = option.id;
}
});
$(toBeSelected).setAttribute('selected','selected');
今、上記のスクリプトはChromeとFirefoxで正常に動作しますが、IEで、それは常にリストの最後の要素を選択します:それは少しこのようになります。だから私はオプションのリストを生成していたと言う['a','b','c','d']
、 'd'は常に選択されます。
これを引き起こしている可能性のあるアイデアは誰かありますか?
UPDATE:
さて、私はこの解決策を見つけて、それは少し、以下のように、手動オプションノードを生成して「挿入」を置き換える関与:
var newOption = document.createElement('option');
newOption.setAttribute('value',option.value);
newOption.innerHTML = option.text;
if(option.selected) {
newOption.selected = true;
}
$('selectField').appendChild(newOption);
私は推測しています問題はプロトタイプがどのように動作するかとうそつきましたが、問題は解決してうれしいです。
8時間が私自身の質問に答えると、これを回答として再フォーマットします。この
option.selectedの値は何ですか? –
それはboolなので、 'true'か' false'のどちらかです。 – Geoff
IEで何が起こっているかを知るために、すべてのoption.selectedに警告することをお勧めします。また、私はoption.selectedでif文を置き換えます。=== true – zatatatata