JavaScript Einblenden/Ausblenden Bug

furryhamster

Lt. Commander
Registriert
Okt. 2008
Beiträge
1.100
Hi,

habe zwei knöpfe, die jeweils etwas einblenden sollen. wenn ich den ersten drücke, soll der inhalt von div1 eingeblendet werden und falls div2 eingeblendet ist, dieses ausgeblendet werden und umgekehrt.
dies funktioniert soweit auch ganz gut bis auf einen bug. der switch erfolgt immer. d.h. wenn ich mehrmals auf button 1 klicke, switcht der immer zwischen den beiden divs.

kann wohl einer mal nach dem fehler schauen?
PHP:
function toggleMe(id)
    {
        var e = document.getElementById(id);
        
        // prüfen ob element mit der id gefunden wurde
        // WENN variable "e" entspricht FALSE: ABBRECHEN
        if(!e) return;
        
        if(e.style.display == "none") {
            // das element war versteckt
            
            var state = "block";
            e.style.display = "block";
        } else {
            // das element war sichtbar
            
            var state = "none";
            e.style.display = "none";
        }
        
        if(id == "buch") {
            // als id wurde "buch" übergeben
            var hide = "cd";
        } else {
            // als id wurde höchstwarscheinlich "cd" übergeben
            var hide = "buch";
        }   
        
        // wir überschreiben die variable mit dem entsprechenden element
        hide = document.getElementById(hide);
        
        // prüfen ob element mit der id gefunden wurde (siehe anfang)
        if(!hide) return;
        
        if(state == "block") {
            // das andere element war versteckt und ist nun sichbar
            // daher verstecken wir dieses element
            hide.style.display = "none";
        } else {
            // das andere element war sichbar
            // daher blenden wir dieses element nun ein
            hide.style.display = "block";
        }
    }
 
Hey!

Was genau willst du denn verbessert haben? Dass du beim zweiten Klick auf den gleichen Button nicht das andere Div wieder einblendest?
Wenn ja, dann müsstest du eigentlich nur diesen else-Zweig entfernen:

PHP:
else {
  // das andere element war sichbar
  // daher blenden wir dieses element nun ein
  hide.style.display = "block";
}

Liebe Grüße
 
Hi kannst du mal den kompletten HTML Code einstellen. Bist du sicher das das PHP ist, sieht aus wie JS. Ansonsten schließe ich mich Flohmaster an, was willst du genau?
Button1 blendet immer div1 ein und div2 aus und andersherum? Das geht deutlich leichter?
 
ist kein php, ist javascript, wies auch im titel steht ^^

@Flohmaster: vielen dank. genau das wars schon :)

@tfuint: wenn du ne lösung hast, wie es einfacher geht, mit dem einblenden der jeweiligen elemente kannst du gerne mal posten. vom sinn habt ihr es beide schon richtig verstanden.
 
So nicht getestet sollte aber arbeiten.
hab mich durch das Tag php-code verwirren lassen.
Wenns nich tut firebug oder iron.

PHP:
function toggleMe(id) 
    { 
        var e = document.getElementById(id); 
         
        // prüfen ob element mit der id gefunden wurde 
        // WENN variable "e" entspricht FALSE: ABBRECHEN 
        if(!e) return; 
        e.style.display = "block"; 
        
        //sollte in case umgewandelt werden  wenn mehr elemente gefordert
        if(id == "buch") { 
            // als id wurde "buch" übergeben 
            var hide = "cd"; 
        } else { 
            // als id wurde höchstwarscheinlich "cd" übergeben 
            var hide = "buch"; 
        }    
         
        // wir überschreiben die variable mit dem entsprechenden element 
        hide = document.getElementById(hide); 
         
        // prüfen ob element mit der id gefunden wurde (siehe anfang) 
        if(!hide) return;  
            // das andere element war versteckt und ist nun sichbar 
            // daher verstecken wir dieses element 
         hide.style.display = "none"; 
        
    }
 
Zurück
Oben