2

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.

2 Answers 2

6

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.

Sign up to request clarification or add additional context in comments.

Comments

4

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.