在低版本IE就连根据class获取元素都需要遍历整个文档,更何况连标签名都算没有的注释节点呢?所以在低版本IE上遍历是必不可少的。但是现代浏览器就不用那么麻烦!在之前的文章中有提到过一个被我称为树木漫步者的家伙,它就可以根据节点类型来获取节点。因此我们可以结合低版本IE和现代浏览器的实现方式,写出一个全兼容的代码。
<!--JavaScript遍历注释节点-->
<!--大家好,我是个注释节点-->
<script>
onload=function(){
var i,o,s=getCommentNodes(document);
for(i=0;o=s[i];i++)console.log(o);
};
//兼容的获取简单方案
var getCommentNodes=window.NodeFilter?function(e){
//支持TreeWalker的浏览器
var r=[],o,s;
s=document.createTreeWalker(e,NodeFilter.SHOW_COMMENT,null,null);
while(o=s.nextNode())r.push(o); //遍历迭代器
return r;
}:function(e){
//不支持的需要遍历
switch(e.nodeType){
case 8:return [e]; //注释节点直接返回
case 1:case 9: //文档或元素需要遍历子节点
var i,s=e.childNodes,l=s.length,result=[];
for(i=0;i<s.length;i++) //递归每个子节点
result.push(getCommentNodes(s[i]));
return Array.prototype.concat.apply([],result); //合并子数组
};
};
</script>

他的ide 是notepad, 是按空格键的时候 ide自动产生的缩进
<x src="http://static.tieba.baidu.com/tb/editor/images/face/i_f25.png?t=20130921" />
嘿嘿。