高性能JS比较nextSibling,ChildNodes,Children速度

function testNextSibling(){
    
var el = $('mydiv'),
        ch 
= el.firstChild,
        name 
= '';
    
do {
        name 
= ch.nodeName;
    } 
while (ch = ch.nextSibling);
    
return name;
}
function testChildNodes(){
    
var el = $('mydiv'),
        ch 
= el.childNodes,
        len 
= ch.length,
        name 
= '';
    
for(var count=0; count<len; count++){
        name 
= ch[count].nodeName;
    }
    
return name;
}
function testChildren(){
    
var el = $('mydiv'),
        ch 
= el.children,
        len 
= ch.length,
        name 
= '';
    
for(var count=0; count<len; count++){
        name 
= ch[count].nodeName;
    }
    
return name;
}
 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
</head>
<body>
<input type="button" value="start-test" id="testBtn" />
<ol>
<li>
<h3>nextSibling</h3>
<p id="test-1"></p>
</li>
<li>
<h3>childNodes</h3>
<p id="test-2"></p>
</li>
<li>
<h3>children</h3>
<p id="test-3"></p>
</li>
</ol>
<div id="mydiv"></div>
<script type="text/javascript">
function $(){ return document.getElementById(arguments[0]); };
for(var i=0; i<8000; i++){
var d = document.createElement('div');
d.innerHTML = '第一重div<p>第二重p<span>第三重span</span></p>';
$('mydiv').appendChild(d);
}
$('testBtn').onclick = startTest;
function startTest(){
var time1 = new Date();
var tar = testNextSibling();
$('test-1').innerHTML = '耗时:' + (new Date() - time1) + '毫秒 ' + tar;
var time2 = new Date();
var tar2 = testChildNodes();
$('test-2').innerHTML = '耗时:' + (new Date() - time2) + '毫秒 ' + tar2;
var time3 = new Date();
var tar3 = testChildren();
$('test-3').innerHTML = '耗时:' + (new Date() - time3) + '毫秒 ' + tar3;
}
function testNextSibling(){
var el = $('mydiv'),
ch = el.firstChild,
name = '';
do {
name = ch.nodeName;
} while (ch = ch.nextSibling);
return name;
}
function testChildNodes(){
var el = $('mydiv'),
ch = el.childNodes,
len = ch.length,
name = '';
for(var count=0; count<len; count++){
name = ch[count].nodeName;
}
return name;
}
function testChildren(){
var el = $('mydiv'),
ch = el.children,
len = ch.length,
name = '';
for(var count=0; count<len; count++){
name = ch[count].nodeName;
}
return name;
}
</script>
</body>
</html>
原文地址:https://www.cnblogs.com/milk/p/2445799.html