快速清除多选框的已选中状态

工作中碰到一个变态的性能问题。CMS中有个页面,上面有个多选框,其中有14000个选项。页面中提供给用户一个按钮,点击这个按钮时要清除已选中状态。原有的代码是这样的:

function re() {
    for (var i = 0; i < document.form1.totopicid.options.length; i++) {
        document.form1.totopicid.options[i].selected = false;
    }
}

先抛开循环时多次计算length的问题不谈,光是执行14000次的document.form1.totopicid.options[i].selected = false;就要用户等很长时间。其实有一种更快捷的方式去做这件事情。代码如下:

function re() {
    var select = document.form1.totopicid;
    select.selectedIndex = 0;
    select.options[0].selected = false;
}

这样不仅代码量小,而且性能也能得到很大提升。

发表评论