• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

getElementsByClassName funktioniert nicht

Status
Für weitere Antworten geschlossen.

fiedel

Mitglied
Hallo!
Ich habe mir ein kleines Skript erstellt, das alle Elemente mit class="visible" als block darstellen soll und alle mit class="hidden" mit "none" verstecken soll... soweit die Theorie, doch leider klappt es in der Praxis nicht ganz...

Code:
<script type="text/javascript">
function display() {
        var hidden = document.getElementsByClassName('hidden');
        var visible = document.getElementsByClassName('visible');
        
        hidden.style.display = "none";
        visible.style.display = "block";
}

window.onload = display;
</script>
Ich vermute, dass es an dem getElementsByClassName liegen könnte, da es einwandfrei funktionierte, als ich das Element mit getElementById über die ID angesprochen hatte.
 
In JavaScript gibt es keine Funktion getElementsByClassName, die ist meines Wissens nur für zukünftige Versionen angedacht. Man kann sie sich aber selbst schreiben, hab ich bei einigen Projekten schon so verwendet:

Code:
function getElementsByClassName(tagname, findClass, dothis) {
if(tagname)
{
 var aElm=document.body.getElementsByTagName(tagname);
 for(var i=0; i<aElm.length; i++) {
  if(aElm[i].className==findClass) {
   if(dothis == "machwas")
    {
     // Code zum Ausführen
    }
   }
  }
 }
}
 
Okay, danke schonmal für eure Antworten! Doch leider hat es immernoch nicht geklappt: Test

Ich wäre euch sehr dankbar, wenn ihr mal schauen könntet, wo da der Fehler liegt!
 
Benutz die JavaScript-Konsole im Firefox, da siehst Du sofort wo es hängt.

Code:
document.hidden.style.display = "none";
 
Mein getElementsByClassName() gibt immer ein Array zurück und kein konkretes Element.

Du musst also loopen, sofern die hidden[0] nicht reicht.
 
Danke schön, hat funktioniert!
Code:
function display() {
    var hidden = getElementsByClassName('hidden');
    var visible = getElementsByClassName('visible');
        
    for(i=0;i<hidden.length;i++) {  
        hidden[i].style.display = "none";  
    } 
        
    for(i=0;i<visible.length;i++) {  
        visible[i].style.display = "block";  
    } 
}
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben