Laggy字符串搜索,如何改进?

时间:2017-10-30 19:22:41

标签: javascript

我有一个函数,用于在具有特定类名的元素的innerText中搜索特定字符串。当它找到匹配时,它为该元素提供要显示的块的显示,如果不显示则不显示。当我使用它来搜索(我有大约3千个具有相同类的元素)时,它需要几秒钟(大约5秒)才能完成。是否有更基于性能的方式来编写此代码,可能会减少一两秒?

function searchClass(ClassName, Value){
    var c = document.getElementsByClassName(ClassName);
    var val = Value.toLowerCase().trim();
    for(var i=0;i<c.length;i++){
        if(c[i].innerText.toLowerCase().trim().indexOf(val) > -1){
            c[i].style.display = "block";
        }else{
            c[i].style.display = "none";
        }
    }
}

PS。有一个触发该功能的键盘事件。

编辑:(解决方案)只需将innerText更改为textContent,我的搜索会立即变得更快,并且感谢评论会有一些小改动!

1 个答案:

答案 0 :(得分:0)

当你不需要之前的值时,

预增量比后增量更快,而你也没有,所以在for循环中切换到预增量(尽管id期待今天&#39; s竞争js引擎自动优化这个,gcc已经在-O1和更高版本上做了很多次)

另外,除非你有很多脚本元素,textContent应该比innerText快很多,所以切换到textContent ......除此之外,我没有太大的改进空间