实际应用中很多地方需要按照类名来查找对象 (mark一下)
function getEleByClass(classname, tagname, parentNode){
var parent = parentNode || document.body,
tagname = tagname || '*',
o = parent.getElementsByTagName(tagname),
p = [],
reg = new RegExp('(^|\\s+)' + classname + '(\\s+|$)');
for (var i = 0; i < o.length; i++) {
if (o[i].className && reg.test(o[i].className)) {
p.push(o[i]); //或p[p.length] = o[i] 简单的字符串数字效率高些;
}
}
return p;
}
或者:
function getEleByClass(classname, tagname, parentNode){
var parent = parentNode || document.body,
tagname = tagname || '*',
o = parent.getElementsByTagName(tagname),
p = [];
for(var i = -1, l = o.length; ++i <l;){
var c = o[i].className.split(' ');
for(var j = -1, cl = c.length; ++j < cl;){
if(classname == c[j]){
p.push(o[i]);
//p[p.length]=o[i];
break;
}
}
}
return p;
}
测试发现第一种用正则的方式在chrome下效率高些 在其他浏览器下则第二种方式效率高些
说到正则 有些问题要记录下 在写new RegExp()的时候里面的‘\’需要转义