Eigene Funktion getElementsByClassName funktioniert findet zu viele Elemente

timestamp

Mitglied Käsekuchen
Hallo Forum

ich stehe hier for einem Rätsel. Ich habe mir eine Funktion geschrieben um HTML Objekte mit bestimmtem Klassennamen zu finden:
Javascript:
function getElementsByClassName(class){
  elements = document.getElementsByTagName("*");
  returnArray = new Array();
  for (i = 0; i < elements.length; i++) {
    if( elements[i].className == class){
      returnArray.push(elements[i]);
    }
  }
  return returnArray;
}

Das Problem dabei ist, dass ich nur einen div mit entsprechender Klasse habe, dieser aber zweimal gefunden wird. Wie kann ich den Fehler beheben?
 
Moin,

das kann ich nicht nachvollziehen, bei mir liefert dies 1 Element, wenn nur eins da ist.

Das einzig fehlerhafte am Skript ist die Nutzung des Variablennamens "class"...dies ist ein geschützer Name in JS, mein IE6 honoriert dies sogar damit, dass er das Skript nicht ausführt.

Gut wäre auch noch, wenn du die Variablen per var deklarierst, damit sie nicht global sichtbar sind....dies könnte zu Wechselwirkungen führen.
 
Hmm

ich habe es jetzt auch noch einmal getestet und die Funktion funktioniert einwandfrei. Der Fehler muss also wohl woander liegen, danke :)
 
Hallo,
bei mir hat bisher folgendes prima funktioniert, da auch multiple Klassen berücksichtigt werden:

Code:
function getElementsByClassName(class_name){
  var returnArray = new Array(), i, j=0, testStr;
  var allElements = document.getElementsByTagName("*");

  for (i = 0; i < allElements.length; i++) {
    if(allElements[i].className.indexOf(class_name) > -1){
      testStr = ","+allElements[i].className.split(" ").join(",")+",";
      if(testStr.indexOf(","+class_name+",") > -1) {
        returnArray[j] = allElements[i];
        j++;
      }
    }
  }
  return returnArray;
}
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück