简单获取页面所有dom节点

2017-04-28  本文已影响0人  就那ck

实现类似document.getElementsByTagName("*");的功能

function getAllNodes(d){
    //判断下参数
    d === '*' && (d = document.getElementsByTagName('html'));
    //用arguments[1] 初始化一个空数组
    !arguments[1] && (arguments[1] = []);
    for(var i = 0,l = d.length;i < l;i++){
        //nodeType === 1 时 push
        d[i].nodeType === 1 && arguments[1].push(d[i]);
        //有子节点 arguments[1]作为参数继续调用 arguments.callee 可以调用自身 匿名函数常用 
        d[i].hasChildNodes() && arguments.callee(d[i].childNodes,arguments[1]);
    }
    //把arguments[1] return出来
    return arguments[1];
};
console.log(getAllNodes("*"));
上一篇下一篇

猜你喜欢

热点阅读