SoFunction
Updated on 2025-03-01

About the problem of not being used in IE.


*
Developed by Robert Nyman,
Code/licensing: /p/getelementsbyclassname/
*/
var getElementsByClassName = function (className, tag, elm){
if () {
getElementsByClassName = function (className, tag, elm) {
elm = elm || document;
var elements = (className),
nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
returnElements = [],
current;
for(var i=0, il=; i<il; i+=1){
current = elements[i];
if(!nodeName || ()) {
(current);
}
}
return returnElements;
};
}
else if () {
getElementsByClassName = function (className, tag, elm) {
tag = tag || "*";
elm = elm || document;
var classes = (" "),
classesToCheck = "",
xhtmlNamespace = "http:///1999/xhtml",
namespaceResolver = ( === xhtmlNamespace)? xhtmlNamespace : null,
returnElements = [],
elements,
node;
for(var j=0, jl=; j<jl; j+=1){
classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
}
try {
elements = (".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
}
catch (e) {
elements = (".//" + tag + classesToCheck, elm, null, 0, null);
}
while ((node = ())) {
(node);
}
return returnElements;
};
}
else {
getElementsByClassName = function (className, tag, elm) {
tag = tag || "*";
elm = elm || document;
var classes = (" "),
classesToCheck = [],
elements = (tag === "*" && )? : (tag),
current,
returnElements = [],
match;
for(var k=0, kl=; k<kl; k+=1){
(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
}
for(var l=0, ll=; l<ll; l+=1){
current = elements[l];
match = false;
for(var m=0, ml=; m<ml; m+=1){
match = classesToCheck[m].test();
if (!match) {
break;
}
}
if (match) {
(current);
}
}
return returnElements;
};
}
return getElementsByClassName(className, tag, elm);
};