如何提高智能手机上的表过滤JavaScript的速度?
我想用输入框过滤一个表。它可以工作,但在我的目标平台——Iphone、Htc Touch HD(过滤800行大约需要4秒)的智能手机上运行缓慢 请让我知道,如果你能帮助加快这一点如何提高智能手机上的表过滤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
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对于链接(尽管你应该将其设置为链接),这里有一些好的提示。