Question

I wonder if it is possible in Javascript to have a click event listener that every time I click changes my boolean from true to false back and forth. Meaning I click one it goes to false, I click again and it goes to true and so on in an infinite loop. I don't even know if it is possible but I tried this:

//This is my listener
circlePicker.click(function () {
    booleanChecker(circlePickerSelector);
    console.log(booleanChecker(circlePickerSelector));
});

//This function checks if the boolean is true or false
function booleanChecker(isThisTrue) {
    // circlePickerSelector = !circlePickerSelector;
    // return circlePickerSelector;
    if (isThisTrue == false) {
        isThisTrue = true;
        console.log("I turned into true");
    } else if (isThisTrue == true) {
        isThisTrue = false;
        console.log("I turned into false");
    }
    return isThisTrue;
}

I would like to know if this is possible. I get a feeling something is wrong in my syntax. Any suggestion is more than welcome.

Was it helpful?

Solution

You can toggle it by using the ! operator

circlePicker.click(function () {
    circlePickerSelector = !circlePickerSelector;
    console.log(circlePickerSelector);
});

If circlePickerSelector was originally true, then !circlePickerSelector turns it to false. You can then assign it to the same variable to do the reverse on next click.

OTHER TIPS

Create a closure around a variable then return a function from inside that closure, for example,

function bool(initial) {
    initial = !!initial;
    return {
         get current() {
             return initial;
         },
         toggle: function () {
             return initial = !initial;
         }
    };
}
var b = bool(true);
b.current;  // true
b.toggle(); // false
b.current;  // false
b.toggle(); // true
b.current;  // true
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top