2014-12-04 2 views
0

Я довольно новичок в javascript, и, похоже, что-то, что я просто не получаю о булевых. Я пытаюсь переключить логическое значение, когда кто-то нажимает на элемент на моей веб-странице. Код выглядит следующим образом:toggling booleans в javascript

$(document).ready(function() { 
var toggled; 
$("#button").click(function(){ 
    toggled=!toggled; 
}); 
if(toggled){ 
    $(".offcanvas").css("margin-left","0%"); 
} 
else{ 
    $(".offcanvas").css("margin-left","-40%"); 
} 

});

Если кто-то может объяснить мне, что я делаю неправильно, я был бы очень признателен за вашу помощь.

Спасибо заранее

+0

Добро пожаловать в асинхронный характер JS. Логическое значение переключается на обратный вызов при каждом нажатии, но проверяется только один раз, когда код считывается изначально. Он не прослушивает изменения этой переменной, поэтому ваши поля не изменяются. – LouisK

ответ

0

Попробуйте это ...

$(document).ready(function() { 
    var toggled = false; 
    $("#button").click(function(){ 
    toggled=!toggled; 
    if(toggled){ 
     $(".offcanvas").css("margin-left","0%"); 
    } 
    else{ 
     $(".offcanvas").css("margin-left","-40%"); 
    } 
    }); 
}); 

Перемещение если структура внутри события щелчка будет убедиться, что он проверяется после переключения изменяется. Установка значения по умолчанию просто мне кажется правильным, хотя с правдой/ложью вы можете быть там хороши.