自定义getElementsbyClassName(封装)

javascript

/**
 * 这是一个自定义的js工具库
 * @author llh
 * @date 2017/4/19
 * @version 0.0.1
 */

/**
 * 实现标签对象的样式属性设置或获取
 * @param object            需要使用的标签对象(标签对象指的是使用类似document.getElementById得到的结果)
 * @param attribute         我们需要操作的样式属性
 * @param value             如果是重新设置需要提供这个内容,表示把这个内容设置到样式里
 */
function css(object, attribute, value){
    // 在js里函数虽然声明参数,但实际调用过程中可以不提供参数或不提供完整的参数,所以虽要使用arguments判断调用者
    // 传递了多少个参数
    if(arguments.length == 2){ // 获取
        if(object.currentStyle){    // IE浏览器
            //object.currentStyle.width;
            return object.currentStyle[attribute];
        }else{
            return getComputedStyle(object, false)[attribute];
        }
    }else if(arguments.length == 3){ // 设置
        object.style[attribute] = value;// 不能用currentStyle.attribute否则js会认为是调用
                                        // currentStyle里的attribute属性
    }
}

/**
 * 兼容低版本IE实现getElementsByClassName的元素查找
 * @param {Object} className        需要查找的类样式名称
 */
function getElementsByClassName(className){
    var aResult = [];       //保持查找到所有结果

    // 1. 获取DOM树里所有的标签
    var aElements = document.getElementsByTagName('*');
    // 2. 遍历上一步的结果
    var aClassNames;
    for (var i=0,length=aElements.length; i<length; i++){
        // 3. 获取每一个元素的class属性

        // 3.1 判断元素是否有class属性
        if (aElements[i].className){
            aClassNames = aElements[i].className;
            aClassNames = aClassNames.split(' ');   // 处理一个class使用多个类选择器
            //aElements.getAttribute('class')
            // 4. 迭代aClassNames获取每一个类选择器
            for (var j=0,len=aClassNames.length; j<len; j++){
                // 5. 比较class属性的内容是否和参数的内容一致
                if (aClassNames[j] == className){
                    // 5. 如果是一致的,把元素放到aResult
                    aResult.push(aElements[i]);
                    // 6. 如果已经找到符合的内容,后面的就不需要再做检查
                    break;
                }
            }
        }
    }


    return aResult;
}

html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>自定义getElementsbyClassName</title>
    </head>
    <body>
<div class="div1">
    <ul class="ul1">
        <li class="li1"></li>
        <li class="li2"></li>
        <li class="li3"></li>
    </ul>
    <ul class="ul1">
        <li class="li1"></li>
        <li class="li2"></li>
        <li class="li3"></li>
    </ul>
</div>
<div class="div1">
    <ul class="ul1">
        <li class="li1 li1-1 li1-2"></li>
        <li class="li2"></li>
        <li class="li3"></li>
    </ul>
    <ul class="ul1">
        <li class="li1"></li>
        <li class="li2"></li>
        <li class="li3"></li>
    </ul>
</div>
    </body>
<script type="text/javascript" src="js/utils.js" ></script>
<script>
    var ary = getElementsByClassName('li1');
//  alert(ary.length);
</script>
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: getElementsByClassName 是一种 DOM API,用于通过类名获取 HTML 文档中的元素。它返回一个 NodeList 对象,其中包含具有指定类名的所有元素。在 JavaScript 中,可以使用以下代码来调用它: var elements = document.getElementsByClassName('class-name'); ### 回答2: getElementsByClassName是一个JavaScript方法,它根据指定的类名返回一个类似数组的HTML元素集合。该方法的参数是一个字符串,用于指定要查找的元素的类名。 getElementsByClassName方法会在整个文档中搜索符合要求的元素,并将它们作为一个集合返回。这个集合可以使用索引进行访问,集合中的每个元素都是一个HTML对象。 使用getElementsByClassName的步骤如下: 1. 首先,使用文档对象document调用getElementsByClassName方法。 2. 作为方法参数,传入要查找的类名。 3. 方法会返回一个HTML对象的集合,可以使用索引访问其中的元素。 4. 如果找不到符合要求的元素,则返回一个空的集合。 这个方法非常有用,可以通过指定的类名来选择和操作特定的元素。例如,如果网页中有多个具有相同类名的元素,可以使用getElementsByClassName方法找到它们并进行批量操作,而不需要一个一个地遍历。 需要注意的是,getElementsByClassName方法返回的是一个动态集合,即它会随着DOM的变化而自动更新。这意味着当文档中有元素的类名发生变化或者被添加/移除时,集合中的元素会自动反映这些变化。 综上所述,getElementsByClassName是通过类名来获取HTML元素的方法,它简化了对特定元素的查找和操作,并且具有动态更新的特性。 ### 回答3: getElementsByClassName是一种用于通过类名获取元素的方法。它是在JavaScript中常用的DOM操作方法之一。该方法可以根据指定的类名返回一个包含所有匹配元素的数组。 使用getElementsByClassName方法,我们可以在HTML文档中通过类名进行元素的选择和操作。它可以作为一种有效的选择器,与其他选择器方法如getElementById和getElementsByTagName一起使用,可以更加灵活地操作HTML文档。 这个方法的使用非常简单。我们只需要调用document对象的getElementsByClassName方法,并将想要选择的类名作为参数传递进去。例如,要选择拥有类名为“demo”的元素,可以使用以下代码: var elem = document.getElementsByClassName("demo"); 这样,所有拥有类名为“demo”的元素都会被存储在elem变量中。需要注意的是,getElementsByClassName返回的是一个带有元素的类数组对象,并不是一个真正的数组。如果需要使用数组的方法和属性,可以将其转换成数组,或者通过for循环来进行遍历。 通过getElementsByClassName方法,我们可以方便地对选择的元素进行各种操作,比如修改元素的样式、改变元素的内容、绑定事件等。此外,它还可以与其他选择器方法一起使用,组合多个条件进行元素的选择。如此一来,我们可以更加灵活地操作和控制HTML文档中的元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值