分享9点个人认为比较重要的javascript 编程技巧(2)


var alldiv = document.getElementsByTagName('div');
    var len,i;
    for(i=0,len=alldiv.length;i<len;i++)
    {
        var div = document.createElement('div');
        div.innerHTML= i.toString();
        document.body.appendChild(div);
    }

这里建议:最好不要频繁的对NodeList操作,因为每次操作都会执行一次DOM树的查询。

除了以上介绍的方法外,HTML5 新加入的API(selector API Level1)也能解决这个问题,它类似C#的linq及时查询,至于什么是linq及时查询,以后我会更新blog,敬请关注:

复制代码 代码如下:


var allDiv= document.querySelectorAll('div');
    for(var i=0;i<alldiv.length;i++)
    {
        var div = document.createElement('div');
        div.innerHTML= i.toString();
        document.body.appendChild(div);
    }

querySelectorAll需要一个参数,一个CSS选择器,类似jquery中的$(),它返回的NodeList是一个及时的,非动态的DOM集合。

另外还有一个querySelector,返回匹配的第一个元素,有关HTML5 API 详 见

或者

https://developer.mozilla.org/zh-CN/docs/Web/API

另外,本人也在酝酿一篇blog,专门讲HTML5 API的,敬请关注。

9.DOM性能:

不要做这种傻事(我做过。。。)

复制代码 代码如下:


for(var i=0;i<10;i++)
    {
       document.querySelector('ul').innerHTML="<li>"+i+"</li>";
    }

给对象的innerHTML赋值,会调用内置的C++解析器解析这个字符串,虽然速度很快,但是最好不要这样操作,会有一定的性能流失。

最好这样做:

复制代码 代码如下:


var ih=null;

for(var i=0;i<10;i++)
 {
    ih+="<li>"+i+"</li>";
 }
  document.querySelector('ul').innerHTML=ih;

另外的一些性能优化话题,等有时间再更新。

以上所述就是本文的全部内容了,希望大家能够喜欢。

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgjdxx.html