getElementsByClassName兼容问题

IE8及以下浏览器是不认识getElementsByClassName的,那我们现在写个方法,使其支持,方法如下:

<script type="text/javascript">// <![CDATA[
        function getClass(tagName, className) {  //第一个参数 表示是className是所属那个dom标签下,这样为了提高检索效率
            //如果是火狐择调用火狐的getElementsByClassName 内置函数
            if (document.getElementsByClassName) {
                return document.getElementsByClassName(className)
            }
            else {
                var nodes = document.getElementsByTagName(tagName),
                ret = []
                for (i = 0; i < nodes.length; i++) {
                    if (hasClass(nodes[i], className)) { ret.push(nodes[i]) }
                }
                return ret;
            }
        }
        function hasClass(node, className) {
            var names = node.className.split(/\s+/) //这个正则表达式是因为class可以有多个,判断是否包含
            for (i = 0; i < names.length; i++) {
                if (names[i] == className) return true;
            }
            return false;
        }
// ]]></script>

应用如下:

getClass(‘div’, ‘test’);

posted @ 2012-11-21 10:08  hlp鹏  阅读(266)  评论(0编辑  收藏  举报