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

如何提高智能手机上的表过滤JavaScript的速度?,javascript,performance,search,Javascript,Performance,Search,我想用输入框过滤一个表。它可以工作,但在我的目标平台——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

我想用输入框过滤一个表。它可以工作,但在我的目标平台——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];
    }
}
函数时间(){
var now=新日期();
var time=now.getTime();
返回时间
}
函数过滤器(短语,_id){
var starttime=时间();
var words=phrase.value.toLowerCase().split(“”);
var table=document.getElementById(_id);
var-ele=null;
var rows=新数组();
对于(var r=0;r/g,“”);
var displayStyle='none';
for(var i=0;i
考虑到平台,性能似乎有些合理,但以下是一些想法:

1.)不要在每次for迭代期间计算数组的长度(请参阅)

2.)在开始时对搜索字符串执行一次toLowerCase(),而不是在选中的每一行中


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

例如,使用。然后您可以看到哪些操作花费的时间最长。测量就是知道。

+1对于链接(尽管你应该将其设置为链接),这里有一些好的提示。