document.getElementsByClassName比循环遍历节点更快吗?

时间:2014-04-06 22:30:11

标签: javascript html select getelementsbytagname getelementsbyclassname

我正在制作一个chrome扩展程序的脚本,我必须检查某个部门中是否存在某些项目。我站在一个两难的境地面前。假设我首先要检查类名,然后检查带有data-ng属性的标签,然后直接嵌入到标签中。我可以通过使用:

来做到这一点
var first = node.getElementsByClassName('classNameOfInterest');

var second = new Array();
var temp = node.getElementsByTagName('a');
for(var a = 0 ; a < temp.length ; a++){
    if(temp[a].hasAttribute('data-ng')){
        second.push(temp[a]);
    }
}temp = false;

var third = new Array();
temp = node.getElementsByTagName('img');
for(var a = 0 ; a < temp.length ; a++){
    if(temp[a].parentNode.nodeName == 'A'){
        third.push(temp[a]);
    }
}temp = false;

或浏览所有可能感兴趣的元素,并立即检查三个条件,如下:

var nodes = node.getElementsByTagName("*");
var first = new Array(); var second = first; var third = first;
for(var a = 0 ; a < nodes.length ; a++){
         if(nodes[a].className.match(\b(classNameOfInterest)\b))
             {first.push(nodes[a]);}
    else if(nodes[a].nodeName == 'A' && nodes[a].hasAttribute('data-ng'))
             {second.push(nodes[a]);}
    else if(nodes[a].nodeName == 'IMG' && nodes[a].parentNode.nodeName == 'A');
             {third.push(nodes[a]);}
}

哪种方法更快/更好,为什么?我想制作合理的代码;)。请帮忙!?

0 个答案:

没有答案