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

Javascript Syntax

BuboBubo

Neues Mitglied
Hi zusammen

Könnt ihr mir bitte erklären, was bei der folgenden Javascript Funktion die Bedingung ist? Normalerweise vergleicht man doch was (== / !=).
Code:
function showHideDiv(id){
    var div = document.getElementById(id);
    
    var none = (div.style.display == 'none'); 
    
    if (none){
        div.style.display = 'block';
    }else{
        div.style.display = 'none';
    }
}

Grüsse
 
Die Bedingung ist ob die Variable none zutrifft also wahr ist. Sie ist wahr wenn die Variable einen Wert enthält. In diesem Fall also immer.
Die Abfrage kann so nicht funktionieren.
 
Doch die Abfrage funktioniert. Bei allen Funktionen, wo Bedingungen abgefragt werden kann man auf den expliziten Vergleich verzichten und sollte es auch, da so kein Typkonvertierung gemacht wird. if(variabel) trifft immer zu, wenn variabel einen wahren Wert hat.

Wenn man einen expliziten Wert vergleichen will sollte man auch === bzw !== verwenden, da sonst u.U. eine Typkonvertierung durchgeführt werden muss.
 
Vielen Dank für die Antworten!

Habe ich das also richtig verstanden, dass die Funktion das folgende prüft?
Hat das DIV den Style display=none, wenn ja mach aus dem Style display=block, sonst mach aus dem Style display=none.
 
Ja, wobei die Funktion noch relativ umständlich ist, man kann da einen Zweizeiler draus machen.

Code:
function showHideDiv(id){
    var div = document.getElementById(id);
    div.style.display = (div.style.display == 'none') ? 'block' : 'none';
}
 
Nach dem ich es ausprobiert habe und mir mit alert den Inhalt von none ausgegeben habe, bin auch ich dahinter gekommen.
Ist wohl noch zu früh heute morgen.

Danke Struppi.

Für alle anderen die auch grübeln:
var none = (div.style.display == 'none')

Es wird geprüft ob display den Wert none hat. Das Ergebnis ist true oder false.
Dieses Ergebnis, true zum Beispiel, wird der Variablen none(man hätte hier besser einen anderen Namen wählen sollen) zugewiesen.
 
Zurück
Oben