Nella malaugurata ipotesi in cui doveste supportare anche versioni obsolete di Internet Explorer potreste aver bisogno di implementare dei metodi del DOM in JavaScript che invece sono disponibili in altri browser. Uno di questi è getElementsByClassName()
. Vediamo come fare.
Il codice è il seguente:
function getElementsByClassName(oElm, strTagName, strClassName) {
var arrElements = (strTagName == "*" && document.all) ? document.all : oElm.getElementsByTagName(strTagName);
var arrReturnElements = [];
strClassName = strClassName.replace(/\-/g, "\\-");
var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
var oElement;
for (var i = 0; i < arrElements.length; i++) {
oElement = arrElements[i];
if (oRegExp.test(oElement.className)) {
arrReturnElements.push(oElement);
}
}
return (arrReturnElements)
}
Data quindi la seguente struttura HTML:
<ul id="test">
<li>A</li>
<li class="even">B</li>
<li>C</li>
<li class="even">D</li>
</ul>
Possiamo usare la funzione in questo modo:
var even = getElementsByClassName(document.getElementById('test'), 'li', 'even');
var str = '';
for (var i = 0; i < even.length; i++) {
var node = even[i];
str += node.firstChild.nodeValue + ' ';
}
alert(str);
Potete visionare l'esempio finale in questa pagina.