标签:
什么是DOM?
DOM优化
以下是两个测试
1 <script> 2 window.onload=function(){ 3 var div=document.getElementById(‘div‘); 4 var str=‘‘; 5 console.time(‘test1‘); 6 for(var i=0;i<5000;i++){ 7 div.innerHTML+=‘a‘; 8 } 9 console.timeEnd(‘test1‘);//FireFox下 测试时间152ms 10 11 console.time(‘test2‘); 12 for(i=0;i<5000;i++){ 13 str+=‘a‘; 14 } 15 div.innerHTML=str; 16 console.timeEnd(‘test2‘);//FireFox下 测试时间1.36ms 17 }; 18 </script> 19 </head> 20 <body> 21 <div id="div"></div> 22 </body>
可以明显看出,test2只操作了一次dom,性能提高了很多
var doc=document; var div=doc.getElementById(‘div‘); var input=doc.getElementById(‘input‘);
DOM与浏览器
可以通过以下的方式减少重排和重绘的过程,从而提升浏览器性能
1 for(var i=0;i<50000;i++){ 2 var li=document.createElement(‘li‘); 3 //不推荐 4 ul.appendChild(li); 5 li.innerHTML=‘li‘; 6 } 7 for(i=0;i<5000;i++){ 8 var li=document.createElement(‘li‘); 9 //推荐 10 li.innerHTML=‘li‘; 11 ul.appendChild(li); 12}
1 window.onload = function(){ 2 var oDiv = document.getElementById(‘div1‘); 3 var L = oDiv.offsetLeft; 4 var T = oDiv.offsetTop; 5 setInterval(function(){ 6 L++; 7 T++; 8 oDiv.style.left = L + ‘px‘; 9 oDiv.style.top = T + ‘px‘; 10 },30); 11 };
1 window.onload = function(){ 2 var oUl = document.getElementById(‘ul1‘); 3 var oFrag = document.createDocumentFragment(); 4 for(var i=0;i<5000;i++){ 5 var oLi = document.createElement(‘li‘); 6 oFrag.appendChild(oLi); 7 } 8 oUl.appendChild(oFrag); 9 };
DOM与事件
1 console.time(‘test1‘); 2 for(i=0;i<oLi.length;i++){ 3 oLi[i].onclick=function(){ 4 alert(1); 5 }; 6 } 7 console.timeEnd(‘test1‘);//火狐下测试 18ms 8 //下面是事件代理绑定事件 9 console.time(‘test2‘); 10 oUl.onclick=function(e){ 11 e=e || event; 12 var t=e.target || e.srcElement; 13 if(t.nodeName.toLowerCase()==‘li‘){ 14 t.onclick=function(){ 15 alert(1); 16 }; 17 } 18 }; 19 console.timeEnd(‘test2‘);//火狐下测试 1.54ms
DOM与前端模板
标签:
原文地址:http://www.cnblogs.com/neove/p/5495431.html