我想知道在Javascript中是否有可能有一个点击事件监听器,每次我点击时都会将我的布尔值从true更改为false。意思是我点击一个它变为假,我再次点击它变为真,依此类推在无限循环中。我甚至不知道是否可能,但我试过这个:
//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;
}
我想知道这是否可行。我觉得我的语法有问题。任何建议都非常受欢迎。
谢谢!
答案 0 :(得分:6)
您可以使用!
运算符
circlePicker.click(function () {
circlePickerSelector = !circlePickerSelector;
console.log(circlePickerSelector);
});
如果circlePickerSelector
最初为true
,则!circlePickerSelector
会将其转为false
。然后,您可以将其分配给同一变量,以便在下次单击时执行相反操作。
答案 1 :(得分:3)
在变量周围创建一个闭包,然后从该闭包内部返回一个函数,例如
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