Reputation: 366
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.
Upvotes: 2
Views: 3315
Reputation: 66304
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
Upvotes: 4
Reputation: 119837
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.
Upvotes: 6