0

Forgive for a moment that there are vastly better ways to handle a simple toggle like this and pretend that we have to do it by declaring inline styles.

What's wrong with my logic such that I can't call toggleSidebar(); every time a button a clicked and always produce the opposite result of what is currently true? (This only works the first time you click the button right now).

function toggleSidebar() {
    var sidebar = document.getElementById('sidebar');
    var show = Boolean;
    
    if (show == null) {
        show = true;
    }

    if (show) { 
        sidebar.style.right = '0px';
        show = !show;
    } else {    
        sidebar.style.right = '-400px';
        show = !show;
    }
}
Fuego DeBassi
  • 2,967
  • 6
  • 29
  • 37
  • `var show = Boolean` inside the function means that it'll be initialized to that every time the function runs. Move it outside the function so that its scope is persistent (and don't use `Boolean` nor `== null`, just initialize it to true or false to begin with) – CertainPerformance May 24 '22 at 23:01
  • I guess thats what I'm asking is there some way to keep it all in the same function but have a setting if statement that only runs the very first time something is called any never again? – Fuego DeBassi May 24 '22 at 23:06
  • No decent way - put the variable outside the function, or surround it in another function for persistent scope – CertainPerformance May 24 '22 at 23:07

0 Answers0