getElementsByClassName兼容 封装

众所周知,JS获取DOM有个getElementsByClassName,非常方便,但是呢,为了兼容某些浏览器(你懂的)。只能 进行封装下了。解决方法如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>getElementsByClassName 封装</title>
</head>

<body>
    <div class="item">item1</div>
    <div class="item">item2</div>
    <div class="item">item3</div>
    <div class="item">item4</div>
    <div class="item">item5</div>
    <div class="item">item6</div>
</body>
<script>
    function getElementsByClassName(name, attrbuteName) {
        var arr = [];
        if (document.getElementsByClassName) {
            // 如果支持这个属性,直接获取
            arr = document.getElementsByClassName(name)
        } else {
            // 如果 不支持
            var attr = attrbuteName ? attrbuteName : "*";///如果指定标签名称则用
            var tagNameArr = document.getElementsByTagName(attr);
            for (var index = 0; index < tagNameArr.length; index++) {
                var classNameArr = tagNameArr[index].className.split(" ")
                for (var j = 0; j < classNameArr.length; j++) {
                    if (classNameArr[j] === name) {
                        arr.push( tagNameArr[index])
                    }

                }
            }
        }
        return arr;
    }
    getElementsByClassName("item","div")[0].style.color = "red"
</script>

</html>

原文地址:https://www.cnblogs.com/huzhuhua/p/11106410.html

时间: 2024-10-11 20:52:12

getElementsByClassName兼容 封装的相关文章

JS-特效 ~ 05. 缓动框架兼容封装/回掉函数/兼容透明度/层级、旋转轮播图、正则表达式、验证表单注册账号、

缓动函数中opcity  写百分值的值 JS一般不用小数运算,会照成精度丢失 元素的默*认透明度是 层级一次性赋值,不缓动 利用for-in为同一个父元素的子元素绑定属性 缓动框架兼容封装/回掉函数/兼容透明度/层级 function animate(ele,json,fn){ //先清定时器 clearInterval(ele.timer); ele.timer = setInterval(function () { //开闭原则 var bool = true; //遍历属性和值,分别单独处

兼容IE8以下,获取className节点的元素(document.getElementsByClassName()兼容写法)。

因为ie8一下不兼容 document.getElementsByClassName() 功能:通过class的名字获取符合条件的元素 node.getElementsByClassName() 指定node节点下,符合条件的元素. 所以我们自己封装一个兼容IE8以下,获取className节点的函数. //兼容IE8以下,获取className节点的元素. function elementsByClassName(node, className){ var res = [];//定义一个数组用

getElementsByClassName兼容IE6/7/8的实现方法

all know: 除IE8及以下版本,getElementsByClassName方法在所有浏览器中都实现了. 本文来分析总结下不同框架或库中,getElementsByClassName的兼容IE8-的实现方法. 框架:NEJ, kissy 库: jQuery 一.NEJ框架的实现方法 __getElementsByClassName = function(_element,_class){ var _result = [], _regexp = new RegExp('(\\s|^)(?:

解决getElementsByClassName兼容问题

getElementsByClassName这个方法很常用,但是只有较新的浏览器才兼容,所以我们需要自己写个方法,解决这个问题,使它能够兼容各个浏览器. function getElementsByClassName(node,classname){ //先判断浏览器是否支持,如果支持则直接使用 if(node.getElementsByClassName){ return node.getElementsByClassName(classname); }else {//如果不支持 var re

javascript中document.getElementsByClassName兼容性封装方法一

var getElmsByClsName = function(className, results) { results = results || []; // 判断浏览器是否支持 getElementsByClassName if(document.getElementsByClassName) { // 浏览器支持这个方法 results.push.apply( results, document.getElementsByClassName(className) ); } else {

getElementsByClassName 兼容 IE 8

1 function getElements(node, className, item) { 2 if (node.getElementsByClassName) { 3 return node.getElementsByClassName(className)[item]; 4 } else { 5 var results = new Array(); 6 var allEle = node.getElementsByTagName('*'); 7 for (var i = 0, l = a

js通过class获取元素getElementsByClassName函数封装

function getElementsByClassName( parent,tag,className ){ var aEls = parent.getElementsByTagName(tag); var arr = []; for (var i = 0; i < aEls.length; i++) { var aClassName = aEls[i].className.split(' '); for (var j = 0; j < aClassName.length; j++) {

让getElementsByClassName兼容

function getElementsByClassName(node, classname){ if(node.getElementsByClassName){ //使用现有方法 return node.getElementsByClassName(classname); }else{ var results = nes Array(); var elems = node.getElementsByTagName("*"); for(var i=0; i<elems.leng

javascript中兄弟元素兼容封装

<script> //获取下一个兄弟元素 function getNextElement(element) { if (element.nextElementSibling) { return element.nextElementSibling; } else { var next = element.nextSibling;//下一个兄弟节点 while (next && next.nodeType !== 1) {//有 而且不是我们要的元素 next = next.ne