我正在开发一个需要通过className获取所有元素的小项目,显然有HTML5 .getElementsByClassName,但我正在尝试创建一个小函数,为它提供一个小的polyfill,它只是不工作。任何帮助非常感谢。或者,如果有更简单的方法可以做到这一点。
function getClassName(element) {
if(!document.getElementsByClassName(element)) {
var retnode = [];
var myclass = new RegExp('\\b'+element+'\\b');
var elem = this.getElementsByTagName('*');
for (var i = 0; i < elem.length; i++) {
var classes = elem[i].className;
if (myclass.test(classes)) retnode.push(elem[i]);
}
return retnode;
} else {
document.getElementsByClassName(element);
}
}
然后这样称呼它:
document.getClassName('active'){
active.className += 'new';
}
答案 0 :(得分:0)
你的功能错了。
element
if(!document.getElementsByClassName) {
return document.getElementsByClassName(element);
抓住自己的addClass方法......类似于
function hasClass(elem,className) {
return elem.className.match(new RegExp('(\\s|^)'+className+'(\\s|$)'));
}
function addClass(elem,className) {
if (!hasClass(elem,cls)) elem.className += " "+className;
}
比你刚才做的
var elems = document.getClassName('active');
for (var i=elems.length-1; i>=0; i--) {
addClass(elems[i],"active");
}