document.createElement(“option”)的快捷方式?

时间:2009-11-06 19:17:06

标签: javascript

我的函数清除了一个下拉列表,然后重新填充它。我真的需要这一切还是有更简洁的方法来做到这一点?我需要创建一个新的document.createElement(“option”);还是有捷径?

        for (blah blah blah) 
        {
            objNewOption = document.createElement("option");
objNewOption.value = day;
objNewOption.text = day;
birthDay.options.add(objNewOption);
        }

4 个答案:

答案 0 :(得分:2)

var new_option_element = new Option(display_label, value, selected_boolean);

答案 1 :(得分:2)

创建自己的快捷方式......

function x() { return document.createElement("option"); }

for(blah blah blah) {
  objNewOption = x();
}

答案 2 :(得分:1)

真的那么久吗?输入的内容并不多。

如果您想使用MooToolsPrototype等框架,他们会有一个Element类,让您可以在一行中完成。

var opt = new Element('option', { value: day, text: day });

答案 3 :(得分:-1)

document.createElement技术的最大问题在于它真的很慢。使用框架是最好的,但不管怎样,我建议构建选项列表并在选择框上设置innerHTML属性。

strOptions = "";
for (blah blah blah) 
{
    strOptions += '<option value="' + day + '">' + day + '</option>'
}
birthDay.innerHTML = strOptions;

浏览器将能够比你手动构建这些元素更快地解析HTML。

在回应评论时,这就是为什么使用平台库总是值得的。在YUI3中,我这样做:

var fillSelectbox = function(select, optionList) {
    var i, option = '';
    for (i = 0; i < optionList.length; i += 1) {
        option += '<option value="' + optionList[i].Value + '" selected="' + (optionList[i].selected ? '"selected"' : '""') + '">' + optionList[i].Text + '</option>';
    }
    select.append(option);
    select.set('selectedIndex', -1);
};

其中select是selectNode,optionList是JavaScript数组。