2016-07-12 20 views
0
var cl = 0; 
var menu = function(){ 

    if(cl === 0){ 
     $('.menu_nav').animate({left: '0px'}, 200); 

     $('body').animate({left: '285px'}, 200); 

     var cl = cl + 1; 
     console.log("First " + cl); 
    }else{ 
     $('.menu_nav').animate({left: '-285px'}, 200); 

     $('body').animate({left: '0px'}, 200); 

     var cl = cl - 1; 
     console.log("Second " + cl); 
    }; 
}; 

$(document).ready(function(){ 
    $('.menu-btn').on('click', function(){ 
     $(menu); 
    }); 
}); 

Ich versuche, eine Menüschaltfläche ein Seitenfeld zu öffnen, wenn geklickt wird, aber wenn erneut geklickt wird, sollte es schließen. Ich habe versucht + = und = + funktionieren nicht. Ich habe keine Ahnung, was ich tun soll. Es druckt jedes Mal, wenn ich es anklicke, "first 1", es geht nie so weiter, wie es sollte.Wenn ich versuche und eine Variable speichern, funktioniert es nicht?

// Das Problem wurde gelöst Ich erklärte eine Variable innerhalb der Funktion, so dass es jedes Mal 0 wäre. Jetzt setze ich das cl außerhalb der Funktion und es funktioniert gut, weil es jetzt eine Variable speichern und ändern kann, anstatt bei jedem Aufruf der Variablen auf 0 gesetzt zu werden.

+0

Warum rufen Sie nicht einfach die Funktion an? – Li357

+0

@AndrewL. Denn es muss jedes Mal passieren, wenn ich auf den Menü-Button klicke, nicht sobald das Dokument fertig ist. –

+2

Sie setzen eine Variable auf "0" und prüfen dann, ob es in der nächsten Zeile "0" ist, wie könnte es nicht "0" sein? –

Antwort

1

Jedes Mal, das Funktionsmenü den Wert von cl ausgeführt wird, wird zurückgesetzt-ed auf 0 Versuchen Sie, eine globale Variable verwendet wird, wie var cl = 0; vor var menu = function(){ erklären Und in Ihrer Funktion ändert all var cl-cl. Sie können diese Fiddle auch für die Logik überprüfen.

Verwandte Themen