0

我想要做的是创建一个开关,当我向上/向下鼠标滚轮时,动画会运行(但会确保动画在第二个和第三个之前完成......

我所做的是将我的动画变量设置为 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;
}

});

////////////////////////////////////

4

1 回答 1

0

在我看来,问题在于您将条件包装在一个数组中,从而有效地做出如下声明:

if ([true] && [true]) {
if ([false] && [true]) {
if ([true] && [false]) {
if ([false] && [false]) {

这是通过将数组转换为布尔值来评估的。如果你这样做:console.log([delta > 0])日志将显示一个包含trueor值的数组false。将数组评估为布尔值时,数组的内容无关紧要 -console.log(Boolean([]));将记录true因为数组为真(尽管为空)。这不是一种好的检查方式,我怀疑这是你的意图。似乎从您的条件中删除数组包装器时,它们工作正常:

if (delta > 0 && animationStatus==true) {

另请注意,您应该避免==支持===松散的比较,==也可能导致一些意想不到的行为。

于 2014-01-16T22:29:46.450 回答