跨浏览器getClassName JavaScript函数
我正在做一个小项目,需要按类名获取所有元素,很明显有HTML5.GetElementsByCassName,但我试图创建一个小函数,为它提供一个小的多边形填充,它不起作用。非常感谢您的帮助。或者如果有更简单的方法跨浏览器getClassName JavaScript函数,javascript,Javascript,我正在做一个小项目,需要按类名获取所有元素,很明显有HTML5.GetElementsByCassName,但我试图创建一个小函数,为它提供一个小的多边形填充,它不起作用。非常感谢您的帮助。或者如果有更简单的方法 function getClassName(element) { if(!document.getElementsByClassName(element)) { var retnode = []; var myclass = new RegExp('\\b'+eleme
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);
}
}
你的功能是错误的
- 该名称意味着您将获得一个类名,而不是一个元素
- 当您表示className时,使用变量
元素
- 检查支持是否错误
if(!document.getElementsByClassName){
- 在else中缺少返回
返回文档。getElementsByClassName(元素);
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");
}
第二个代码示例没有太多意义。是函数没有返回正确的元素,还是它只是没有按您希望的方式调用?您调用它的示例没有意义。我如何才能正确调用它?谢谢您的回答。Better pollyfill:您忘了“else”中的
return
(称为本地的“GetElementsByCassName”)。感谢您的回复,非常感谢。这与您的意思一致吗?
var elems = document.getClassName('active');
for (var i=elems.length-1; i>=0; i--) {
addClass(elems[i],"active");
}