为了账号安全,请及时绑定邮箱和手机立即绑定

帮我解释一下这个封装函数??获取class

帮我解释一下这个封装函数??获取class

罗富文1995ing 2016-04-24 16:18:55
function getClass( selector ){                 var arr = [],content = content || document;                 var allEle = content.getElementsByTagName("*");//找到所有的标签                 selector = selector.slice(1);                 for( var i = 0; i < allEle.length; i++ ){                     var allClassName = allEle[i].className.split(" ");                     for( var j = 0; j < allClassName.length; j++ ){                         if( selector === allClassName[j] ){                             arr.push( allEle[i] );                             break;                         }                     };                 }                 return arr;             }var arr = [],content = content || document;第一句就不会了???谁能每条语句都解释一下
查看完整描述

1 回答

已采纳
?
陈士愚

TA贡献44条经验 获得超44个赞

function getClass(selector) {
    var arr = [],	// 用于存储查找结果的数组
        content = content || document; // 如果content为空,那么content等于document(js预留关键字,表示当前文档)
    var allEle = content.getElementsByTagName("*"); // *表示所有;找到文档中所有的标签元素
    selector = selector.slice(1); // 缩减匹配集合;从下标为1的位置起到最后(下标计数0开始)
    // 遍历文档中的每个元素,查看与想选择的class是否相等
    for (var i = 0; i < allEle.length; i++) {
    	// 遍历第i个元素,分割其类属性的值,形成类的数组;如“classNameA classNameB”分割成数组['classNameA','classNameB']
        var allClassName = allEle[i].className.split(" ");
        // 遍历验证第i个元素的类数组中有没有我们想找的那个selector,如果有,加入到arr(结果集)
        for (var j = 0; j < allClassName.length; j++) {
            if (selector === allClassName[j]) { // 如果查找选择器selector和第i个元素的类数组中的第j项相同
                arr.push(allEle[i]); // 将第i个元素加入到目标数组中
                break;
            }
        };
    }

    return arr; // 返回结果集合。
}

其中content可能是全局变量,没贴出来,不知道在哪定义的,直接当document来理解也行;

 selector = selector.slice(1);这句知道语法上知道做了什么,不知道作者做这个操作的用意;因为这里也没有说明方法接收哪种格式的参数。

查看完整回答
3 反对 回复 2016-04-24
  • ruibin
    ruibin
    看你写这么多字都必须给你一个赞。
  • 1 回答
  • 0 关注
  • 1328 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信