getElementsByClassName函数实现获取指定类名的子元素列表,语法如下: var elements = getElementsByClassName(element, names); 使用示例如下: 如果html元素
对应的DOM节点为example, 那么
getElementsByClassName(example, “aaa”); 运行结果为包含id为p1, id为p2的元素列表
getElementsByClassName(example, “bbb ccc”);运行结果为包含id为p3的元素列表
getElementsByClassName(example, “ccc bbb”);运行结果为包含id为p3的元素列表
请实现getElementsByClassName方法,要求浏览器兼容。
function getElementsByClassName(element, names) {
if (element.getElementsByClassName) {
return element.getElementsByClassName(names); //如果浏览器支持getElementsByClassName方法,则直接调用
}
else {
var children = element.getElementsByTagName('*');
//获取所有子节点
//新建数组存放满足条件的子元素
var child, childname, flag;
names = names.split(' ');
//将names拆分为子元素的类名数组
for (i in children) {
//对每个子元素进行遍历
var childname = children[i].className;
//获取每个子元素的类名
flag = true;
//标志设为真
for (j in names) {
if (childname.indexOf(names[j]) == -1)
//对类名进行循环 判断names中所有出现过的类名是否都能在childname中找到
{
flag = false;
break;
//如果有的没有匹配成功 则该子元素不满足要求
}
}
if (flag) {
elements.push(children[i]);
//如果子元素满足要求 ,就把子元素添加到数组中
}
}
return elements;
}
}