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数组。
除了在IE(甚至8),不能正确设置SELECT标签的innerHTML。 – seanmonstar 2009-11-06 20:03:36
请解释如何使用框架可以加速DOM操作... – Christoph 2009-11-06 21:22:37
该框架规范了底层浏览器实现中的错误,允许我在Internet Explorer上设置必须更快的innerHTML样式。即使使用平台,构建一个文本字符串而不是大量的选项标签也会更快,这对处理相对较大的数据集非常重要。 – foxxtrot 2009-11-06 21:58:20