getElementsByTagName 和 selectNodes谁更快

时间:2021-11-12 15:05:22
  documentElement.selectNodes("a")   
  documentElement.getElementsByTagName("a") 

  但就达到相同的目的,两种方法谁更快一些?

8 个解决方案

#1


个人觉得是documentElement.getElementsByTagName("a") 快吧。。。

#2


都一样吧!都是dom!!要快用SAX

#3


我觉得一样  回复内容太短了! 

#4


我感觉应该也差不多,不过就是想得到一点有力的说明

#5


如果dom不是很大的,差别不大的,比较没太大意义。真要快的话就像2楼说的用sax

#6


实践即真理:
var stringToDom=function(text) {
    var doc;
    if(window.ActiveXObject) {
        doc = new ActiveXObject("MSXML2.DOMDocument");
        doc.loadXML(text).documentElement;
    } else {
        doc = (new DOMParser()).parseFromString(text,"text/xml");
    }
    return doc;
}
var xmlDoc=stringToDom("<body><a href='a'>a</a><a href='b'>b</a></body>");
var c,d1=new Date();
for(var i=0;i<100000;i++){
    c=xmlDoc.getElementsByTagName("a");
}
document.write("getElementsByTagName: ",new Date()-d1);
d1=new Date();
for(var i=0;i<100000;i++){
    c=xmlDoc.selectNodes("a");//ff好像出不来
}
document.write("<br/>selectNodes: ",new Date()-d1);

#7


它俩实现的目的不一样吧。
documentElement.selectNodes("a") 中的a 包括着路径信息的吧。

#8


我也遇到了差不多的问题!

#1


个人觉得是documentElement.getElementsByTagName("a") 快吧。。。

#2


都一样吧!都是dom!!要快用SAX

#3


我觉得一样  回复内容太短了! 

#4


我感觉应该也差不多,不过就是想得到一点有力的说明

#5


如果dom不是很大的,差别不大的,比较没太大意义。真要快的话就像2楼说的用sax

#6


实践即真理:
var stringToDom=function(text) {
    var doc;
    if(window.ActiveXObject) {
        doc = new ActiveXObject("MSXML2.DOMDocument");
        doc.loadXML(text).documentElement;
    } else {
        doc = (new DOMParser()).parseFromString(text,"text/xml");
    }
    return doc;
}
var xmlDoc=stringToDom("<body><a href='a'>a</a><a href='b'>b</a></body>");
var c,d1=new Date();
for(var i=0;i<100000;i++){
    c=xmlDoc.getElementsByTagName("a");
}
document.write("getElementsByTagName: ",new Date()-d1);
d1=new Date();
for(var i=0;i<100000;i++){
    c=xmlDoc.selectNodes("a");//ff好像出不来
}
document.write("<br/>selectNodes: ",new Date()-d1);

#7


它俩实现的目的不一样吧。
documentElement.selectNodes("a") 中的a 包括着路径信息的吧。

#8


我也遇到了差不多的问题!