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);这句知道语法上知道做了什么,不知道作者做这个操作的用意;因为这里也没有说明方法接收哪种格式的参数。
添加回答
举报
0/150
提交
取消