document.getElementsByClassName方法的重写(OVERRIDE)

众所周知,对于IE8以下的浏览器(IE8居然是WIN7预装的)没有document.getElementsByClassName,网上也有很多重写的方法,以下是本人在项目中所使用的方法

document.getElementsByClassName = function (Name,e,tag) {
            var ele = [],
                allEle,
                length,
                i = 0;

            if (typeof tag === "undefined" ){
                tag = "*"
            }

            if (typeof e === "undefined"){
                e = document;
            }

            allEle = e.getElementsByTagName(tag);

            for (length = allEle.length;i < length;i = i + 1){
                if (allEle[i].className === Name) {
                    ele.push(allEle[i]);
                }
            }

            return ele;
        }
解释下参数问题,首先我们使用的时候后2个参数是可选的,对于IE8以下的浏览器来说,遍历整个DOM树是非常消耗时间的,所以在一般情况下为这种浏览器我们需要一种定位的概念,就是指定后2个参数来更精确的其位置,以提升开发效率
第二个参数是元素对象(element),指定你所找到的className元素的父元素
第三个参数是标签名,指定你所要找的className的标签名
 
剩下,我就不多说了,大家看代码都能看懂了

posted @ 2013-10-06 22:14  SoulUED  阅读(855)  评论(0编辑  收藏  举报