Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
提高Javascript性能的技巧_Javascript_Performance_Dom - Fatal编程技术网

提高Javascript性能的技巧

提高Javascript性能的技巧,javascript,performance,dom,Javascript,Performance,Dom,我有一个要求,需要根据另一个表中的对应行设置表中每行的高度。该表大约有500行。 我已经编写了下面的Javascript,但是8000毫秒左右的性能非常差。 我怎样才能使这更快,感谢任何提示 var start = new Date().getTime(); var rows = document.getElementById("table1").rows; var dup_rows = document.getElementById("table2").rows; var num_

我有一个要求,需要根据另一个表中的对应行设置表中每行的高度。该表大约有500行。 我已经编写了下面的Javascript,但是8000毫秒左右的性能非常差。 我怎样才能使这更快,感谢任何提示

 var start = new Date().getTime();


 var rows = document.getElementById("table1").rows;
 var dup_rows = document.getElementById("table2").rows;
 var num_rows = rows.length;
 var num_dup = dup_rows.length;
 for (var i = 0; i < num_rows; ++i) {
var hg = rows[i].offsetHeight;
    rows[i].style.height = hg +'px';
dup_rows[i].style.height = hg +'px';
   }

var end = new Date().getTime();
var time = end - start;
alert('Execution time: ' + time);

如何在DOM之外设置这些行的高度?

从DOM中删除要修改的元素,然后在完成修改后重新插入它们。这可以防止浏览器在每次更改时都必须重新流式显示文档,仅在完成所有更改后执行一次。

从DOM中删除要修改的元素,然后在完成修改后重新插入它们。这可以防止浏览器在每次更改时都必须重新流式显示文档,只在完成所有更改后执行一次。

不是
dup\u行[i]。style.height=rows[i]。style.height
更好吗?

不是
dup\u行[i]。style.height=rows[i].style.height
更好?

通过使用下面的代码,我终于能够在性能上实现一些改进

 $clone_table1 = $('#table1').clone();
 $clone_table2 = $('#table2').clone();

 $('#table2').remove();
 $trow2 = $('#table1').find('tr');
 $trow = $clone_table1.find('tr');
 $trow3 = $clone_table2.find('tr');

 $trow.each(function(i) {
 var hg = 0;
 hg = $trow2.eq(i).outerHeight();
 $(this).height(hg);
 $trow3.eq(i).height(hg);
 });


$parent2.append($clone_table2);
$('#table1').remove();
$parent1.append($clone_table1);

通过使用下面的代码,我终于能够在性能上实现一些改进

 $clone_table1 = $('#table1').clone();
 $clone_table2 = $('#table2').clone();

 $('#table2').remove();
 $trow2 = $('#table1').find('tr');
 $trow = $clone_table1.find('tr');
 $trow3 = $clone_table2.find('tr');

 $trow.each(function(i) {
 var hg = 0;
 hg = $trow2.eq(i).outerHeight();
 $(this).height(hg);
 $trow3.eq(i).height(hg);
 });


$parent2.append($clone_table2);
$('#table1').remove();
$parent1.append($clone_table1);

谢谢你的回答,但是我不能得到正确的语法,你能帮我一下吗?我试着用jquery来做这件事,但结果是语法错误。谢谢你的回答,但是我不能得到正确的语法,你能帮我一下吗?我试着用jquery来做这件事,但结果是语法错误。我同意。为什么要在一行之后设置高度?我希望两个表的tr高度相等是的,但性能不好,因此我试图以更好的性能获得相同的结果我尝试了以下代码,但高度返回0。var dup_rows=document.getElementById(“表2”).rows;var rows=document.getElementById(“表1”).rows;var num_rows=rows.length;变量$mem#tab2=$(“#表2”);变量$mem_tab=$(“#表1”)$(“表2”)。删除()$(“表1”)。删除();对于(var i=0;i