我有一个函数,用于在具有特定类名的元素的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,我的搜索会立即变得更快,并且感谢评论会有一些小改动!
答案 0 :(得分:0)
预增量比后增量更快,而你也没有,所以在for循环中切换到预增量(尽管id期待今天&#39; s竞争js引擎自动优化这个,gcc已经在-O1和更高版本上做了很多次)
另外,除非你有很多脚本元素,textContent应该比innerText快很多,所以切换到textContent ......除此之外,我没有太大的改进空间