如何提高智能手机上表格过滤JavaScript的速度?

Asked
Viewd149

2

我想用输入框过滤表。它可以运行,但是在我的目标平台智能手机-Iphone,Htc Touch HD(800行需要大约4秒的过滤时间)上运行缓慢。

请告诉我是否可以帮助您加快速度。

 function time(){
    var now = new Date();
    var time = now.getTime();

    return time
}

function filter (phrase, _id){
    var starttime = time();
    var words = phrase.value.toLowerCase().split(" ");
    var table = document.getElementById(_id);
    var ele = null;
    var rows = new Array();
    for (var r=0 ; r < table.rows.length; r++){
        ele = table.rows[r].innerHTML.replace(/<[^>]+>/g,"");
        var displayStyle = 'none';
        for (var i=0 ; i < words.length; i++) {
            if (ele.toLowerCase().indexOf(words[i])!=-1){
                displayStyle = '';
            }else {
                displayStyle = 'none';
                break;
            }
        }
        rows[r] = displayStyle;
    }
    alert((time() - starttime)/1000 +" Sec");
    for(var k=0; k < rows.length; k++){
        table.rows[k].style.display = rows[k];
    }
}
 

2 个答案

2

给定平台,类似声音的声音在某种程度上是合理的,但是这里有一些想法:

1。)不要在每次迭代期间计算数组的长度(请参见 https://developer.mozilla.org/en/A_re-introduction_to_JavaScript#Arrays

2。)首先在搜索字符串上执行一次toLowerCase(),而不是在检查的每一行中执行

3。)最大的麻烦是可能您对innerHTML和replace()的使用,但这取决于浏览器的实现,请查看是否可以用更高效的获取方法来代替它您需要比较的单元格中的文本。

  • +1链接(尽管应该将其设为链接),其中包含一些不错的提示。

    Andrew ColesonApril 22, 2009 23:49
0

例如,使用 Firebug分析器来配置JavaScript。然后,您可以查看花费时间最长的操作。测量就是知道。