function getclass(parent,classname){
var tags=parent.getElementsByTagName('*');
var temp=[];
for(var i=0;i<tags.length;i++){
if(tags[i].className.match(new RegExp("\\s+|^"+classname+'$|\\s+'))){
temp.push(tags[i]);
}
}
return temp;
}
为什么这个函数会获取parent下所有的节点?正则哪里写错了吗?
如果你只是想找 class,可以用 classList
,比如
if (tags[i].classList.contains(classname)) {
temp.push(tags[i])
}
另外,你取 temp 那里可以用 filter
简化
var temp = [].filter.call(tags, function(t) {
return t.classList.contains(classname);
});
改过之后完整的代码
function getByClass(parent, classname) {
var tags = parent.getElementsByTagName('*');
return [].filter.call(tags, function(t) {
return t.classList.contains(classname);
});
}
但其实有更简单的办法可以处理
function getByClass(parent, classname) {
return parent.querySelectorAll("." + classname);
}
这个就是获取parent下所有节点啊,你的实际想法是什么?‘*’是全部匹配
你是想要取得给出classname的child节点吧?
为何要使用正则?,className已经是一个字符串了,直接判断indexOf不就可以了?