0

JSONからオプションをロードするコンボボックスを作成しています。期待どおりにメニューをロードしていますが、デフォルトでコンボボックスに「1つを選択してください」というテキストを表示する必要があります。試してみましたが、解決策が見つかりません.どうすれば解決できますか?

window.onload = function() {
    var obj = JSON.parse(str);    

    for (var i=0; i < obj.MenuParentTabs.length; i++)    {
        var option = document.createElement("option");    
        option.innerHTML = obj.MenuParentTabs[i].parentTabName;
        document.form1.fruits.appendChild(option);
    }
}
4

3 に答える 3

4

ループの前に、必要なoptionテキストでを作成する必要があります。for

var option = document.createElement("option");
option.innerHTML = "Select the one";
document.form1.fruits.appendChild(option);

optionが の最初の子でない場合select(つまりfor 、何らかの理由でループの前に配置しない場合)、selected属性も設定します。

option.setAttribute("selected", "selected");

OP を支援する完全なコード:

window.onload = function() {
    var obj = JSON.parse(str);    

    var option = document.createElement("option");
    option.innerHTML = "Select the one";
    option.setAttribute("selected", "selected");
    document.form1.fruits.appendChild(option);

    for (var i = 0; i < obj.MenuParentTabs.length; i++) {
        option = document.createElement("option");
        option.innerHTML = obj.MenuParentTabs[i].parentTabName;
        document.form1.fruits.appendChild(option);
    }
}
于 2013-01-29T13:40:28.830 に答える
1

ここに非常によく似た質問と回答があります。

HTML 選択: ドロップダウン リストに表示されないデフォルトのテキストを設定する方法は?

basically do this:
var option = document.createElement("option");
option.innerHTML = "Select the one";
option.setAttribute("selected", "selected");
option.setAttribute("disabled", "disabled");
document.form1.fruits.appendChild(option);

本当に徹底したい場合は、メニューが表示されたときにこのオプションを非表示にする何かを追加できると思います.

于 2013-01-29T13:46:48.450 に答える
1

forループの前に次のようなものを入れてみてください:

var option = document.createElement("option");    
option.innerHTML = "Select One";
document.form1.fruits.appendChild(option);

また、この種の悪ふざけには jQuery を強くお勧めします。

于 2013-01-29T13:44:13.553 に答える