接上次的测试,在清空一个DOM元素时会发生什么
我的浏览器环境是Chrome 23,Firefox 17,IE9
我的作法,在body中创建1000个p标签
      for(var i=0;i<10000;i++){
           var p=document.createElement("p");
           p.innerHTML="1";
           document.body.appendChild(p);
      }
      var p=document.getElementsByTagName("p");
测试一
测试innerHTML的写法是
for(var i=0;i<10000;i++){
        var p=document.createElement("p");
        p.innerHTML="1";
        document.body.appendChild(p);
    }
    var p=document.getElementsByTagName("p");
    var d=new Date();
    for(var k=0;k<10000;k++){
        p[k].innerHTML="";
    }
    console.log(new Date()-d);
与之对应的removeChild作法是
for(var i=0;i<10000;i++){
        var p=document.createElement("p");
        p.innerHTML="1";
        document.body.appendChild(p);
    }
    var p=document.getElementsByTagName("p");
    var d=new Date();
    for(var k=0;k<10000;k++){
        p[k].removeChild(p[k].firstChild);
    }
    console.log(new Date()-d);
好了,开始测试!
| 浏览器 | Chrome | Firefox | IE | 
|---|---|---|---|
| innerHTML | 1015-1104 | 35-38 | 6500-7134 | 
| removeChild | 893-987 | 25-28 | 6206-7000 | 
从测试结果看,如果向这一万个P中清空唯一的子元素,那么,所有的浏览器,removeChild都要略快一些。Firefox的效率真是出人意料!
测试二,直接清空body
测试innerHTML的写法是
for(var i=0;i<10000;i++){
        var p=document.createElement("p");
        p.innerHTML="1";
        document.body.appendChild(p);
    }
    
    var d=new Date();
    document.body.innerHTML="";
    console.log(new Date()-d);
与之对应的removeChild作法是
for(var i=0;i<10000;i++){
        var p=document.createElement("p");
        p.innerHTML="1";
        document.body.appendChild(p);
    }
    var p=[].slice.call(document.getElementsByTagName("p"));
    var d=new Date();
    for(var i=0;i<10000;i++){
        document.body.removeChild(p[i]);
    }
    console.log(new Date()-d);
好了,开始测试!
| 浏览器 | Chrome | Firefox | IE | 
|---|---|---|---|
| innerHTML | 3-4 | 26-27 | 1459-1518 | 
| removeChild | 6-8 | 35-37 | 232-251 | 
从测试结果看,如果直接清空body,firefox和chrome下,removeChild都要稍微慢一些,不过IE却快很多
怎么都是英文评论!追求效率,很好