0

我正在创建一个从 JSON 加载选项的组合框。它按预期加载菜单。但默认情况下,我需要在组合框中显示文本“选择一个”。我试过但找不到解决方案..你能给我建议吗,我该如何实现?

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你没有把它放在循环之前),也设置属性:forselected

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

尝试在你的 for 循环之前放置这样的东西:

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

对于这些恶作剧,我也强烈推荐 jQuery。

于 2013-01-29T13:44:13.553 回答
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 回答