Hallo Elya,
die Zeile, die unterschiedlich interpretiert wird, ist
var cls = elem.getAttribute("class");
Der MSIE liefert den Klassennamen über "elem.className",
elem.getAttribute("class") wird garantiert "null" sein.
Also gilt << elem.className!=elem.getAttribute("class") >>
Somit ist Dein Array leer, also arr.length=0;
Nach meinem Test kann man mit "Mozilla/Firebird" auch "className" abfragen.
Tschau
Frank