0

選択ボックスを動的に作成するための以下のコードがあります。これは、FireFox 3.6 を除くすべてのブラウザーで正常に動作します。

var option25 = document.createElement("option");
option25.text = '25 miles';
option25.value = 25;
if(rad == '25')
{
    option25.selected = 'selected';
}
var combo = document.getElementById('ddlProximity_' + controlId);
combo.add(option25); //not working in FF3.6

助言がありますか

4

3 に答える 3

1

select 要素のメソッドは、Gecko バージョン 7 ( MDNadd )より前では 2 つの引数を取ります。

IE では 1 つの引数しか取りません。IE 8 標準モードの IE 8 の場合は 2 つ、またはMSDNの場合は 2 つです。

krg のコードを呼び出しaddてアリティを確認すると、Firefox 3.6.28、Firefox 15.0.1、および IE 9 で動作します。

if (typeof combo.add === 'function') {
    if (combo.add.arity === 1) {
        combo.add(option25);
    } else {
        combo.add(option25, null);
    }
} else if (typeof combo.appendChild === 'function') {
    combo.appendChild(option25);
}

</p>

于 2012-10-07T22:01:22.340 に答える
0

JSコードが幅広いブラウザーで機能することを確認したい場合は、jQueryなどのJavaScriptフレームワークを使用してDOM操作を実行します。JSフレームワークは、ブラウザー間の問題のほとんどを解決し、それらの処理を抽象化したため、特定のブラウザーの問題に対処するためのコードの記述について心配する必要はありません。これがjQueryのサイトです:http://jquery.com/

ここで、jQueryでの例の内容を実行するには、次のようにします。

var option25 = $('<option>').val(25).text('25 miles');
if (rad == '25') {
    option25.attr('selected', 'selected');
}

var combo = $('#ddlProximity_' + controlId);
combo.append(option25); // Will work in all browsers supported by jQuery

JSフレームワークなしでこれを本当に実行したい場合は、http: //www.w3schools.com/jsref/met_select_add.aspを参照してください。addメソッドは機能するはずですが、8より前のバージョンのIEにはいくつかの注意点があり、ページには適切なDOCTYPE宣言が必要です。appendChildを試すこともできますが、それが必要なことを達成するかどうかを確認するために、いくつかのブラウザーでテストします。

于 2012-10-07T21:23:03.203 に答える
0

コンボが選択メニューであると仮定すると、このjsFiddle の例を参照してください。

if (typeof combo.add === 'function') {
    combo.add(option25);
} else if (typeof combo.appendChild === 'function') {
    combo.appendChild(option25);
}

</p>

于 2012-10-07T21:13:47.643 に答える