我想要做的是创建一个开关,当我向上/向下鼠标滚轮时,运行动画(但是会确保动画在第二个和第三个之前完成... )
我所做的是将我的动画变量设置为true并第一次运行它并立即将其切换为false。
不知何故,条件陈述似乎没有起作用......
我的示例代码: http://codepen.io/vincentccw/pen/veyAc
/////////////////////////////////////////////// /////
$("#cropInside").mousewheel(function(event, delta, deltaX, deltaY) {
var boxSlide = document.getElementById("whatEver");
var animationStatus = true;
if ([delta > 0] && [animationStatus==true]){
//code here
animationStatus=false;
console.log(animationStatus);
//call back function after animation complete and set animationStatus=true;
}
if([delta < 0] && [animationStatus==true]){
//code here
animationStatus=false;
console.log(animationStatus);
//call back function after animation complete and set animationStatus=true;
}
});
////////////////////////////////////////////
答案 0 :(得分:0)
在我看来,问题在于你将条件包装在一个数组中,有效地发表如下语句:
if ([true] && [true]) {
if ([false] && [true]) {
if ([true] && [false]) {
if ([false] && [false]) {
这是通过将数组转换为布尔值来计算的。如果您执行此操作:console.log([delta > 0])
日志将显示包含值true
或false
的数组。将数组作为布尔值计算时,数组的内容无关紧要 - console.log(Boolean([]));
将记录true
因为数组为真(尽管为空)。这不是一个好的检查,我怀疑这是你的意图。似乎从您的条件中删除数组包装器时,它们正常工作:
if (delta > 0 && animationStatus==true) {
另请注意,您应该避免==
支持===
,因为与==
的松散比较也会导致一些意外行为。