如何知道javascript中的DOM操作哪个更快?

查看:119
本文介绍了如何知道javascript中的DOM操作哪个更快?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

例如有3个button,
id 为b1/b2/b3,都有class ="button"

假如想对这3个进行DOM操作(动态添加样式类),一开始的获取可以是:

一:分别进行三次var button? = document.getElementById(),然后放到一个数组里(后面有循环调用);
二:使用querySelectorAll()获得Nodelist对象,然后转换成数组;
三:使用document.getElementsByClassName(names);

我想知道哪一个运行起来会更快点,这要如何知道?

解决方案

方法楼上各位提供了,但我对结果比较感兴趣,于是测试了一下:

<!DOCTYPE html>
<html>
<head>
    <title>dom速度测试</title>
</head>
<body>
<div class="haha" id="hehe">你们好</div>

<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript">
    console.time("test0");
    var a=document.getElementById('hehe');
    //console.log(a.innerHTML);
    console.timeEnd('test0');

    console.time("test2");
    var c=document.querySelector("#hehe");
    //console.log(c.innerHTML);
    console.timeEnd('test2');

    console.time("test4");
    var d=$("#hehe");
    //console.log(d.html());
    console.timeEnd('test4');


    console.time("test1");
    var b=document.getElementsByClassName('haha');
    //console.log(b[0].innerHTML);
    console.timeEnd('test1');

    

    console.time("test3");
    var c=document.querySelector(".haha");
    //console.log(c.innerHTML);
    console.timeEnd('test3');

    

    console.time("test5");
    var e=$(".haha");
    //console.log(e.html());
    console.timeEnd('test5');
</script>
</body>
</html>

测试结果:
test0: 0.022ms
test2: 0.041ms
test4: 0.209ms
test1: 0.021ms
test3: 0.0261ms
test5: 0.671ms

刷新多次后观察结果,排序上偶尔会不同,但平均水平和以上给出的结果差不多:
1.用jQuery方法选择器的效率明显较低;
2.document.getElementById()与document.querySelector()的效率基本没有差别,但前者效率稍高一点;
3.最让我意外的是:用class比用id选择器的效率稍高一些,不知这是为什么?但jquery的$(".classnae")选择器的效率永远是最低的)

这篇关于如何知道javascript中的DOM操作哪个更快?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆