Javascript 中断是';我的switch语句不工作
这是我的密码Javascript 中断是';我的switch语句不工作,javascript,switch-statement,case,swipe,Javascript,Switch Statement,Case,Swipe,这是我的密码 if (xPrev < touch.pageY) { $("#debug").text("down :: " + nav); xPrev = touch.pageY; switch(nav){ case 1: $("#container").animate({top:0}); nav --; break; case 2: $("#container").animate({t
if (xPrev < touch.pageY) {
$("#debug").text("down :: " + nav);
xPrev = touch.pageY;
switch(nav){
case 1:
$("#container").animate({top:0});
nav --;
break;
case 2:
$("#container").animate({top:-alto});
nav --;
break;
}
} else if (xPrev > touch.pageY) {
$("#debug").text("up :: " + nav);
xPrev = touch.pageY;
switch(nav){
case 0:
$("#container").animate({top:-alto});
nav ++;
break;
case 1:
$("#container").animate({top:-(alto*2)});
nav ++;
break;
}
};
我认为问题在于
nav
不同值的映射与设置动画的位置不匹配。为了清晰起见,我将使nav
也像y
轴一样,从顶部的0开始,随着对象向下移动而增加。这样,您就可以清楚地映射“模型”(变量“nav”)和“视图”(位置容器)。我不完全确定你说的是三种还是四种不同的立场。以下代码将在三个不同位置之间设置对象的动画
var up = xPrev < touch.pageY;
if( nav<2 && !up ) nav++;
if( nav>0 && up ) nav--;
xPrev = touch.pageY;
$("#container").animate({top:(nav-1)*alto});
var up=xPrev
break
始终有效。您的代码中有一些逻辑错误,但很难从您的描述中知道是什么。当nav==0
时,第一个开关将不会做任何事情。@Barmar xPrev最初是0,因此任何touch.PageY都将大于0,并且它将落入else if中。@Zack您可以将其向后设置。如果xPrev==0
和touch.pageY==10
,xPrev
将为真,因此将执行第一个If
。@Barmar yep。哎哟,我正在尝试在三个位置之间设置动画如果你计算开始位置,ifs将确定你是向上还是向下滑动,以及在哪个方向设置#containerRight的动画。这就是我理解你想做什么的方式。上面的代码应该做到这一点:在三个位置之间设置动画。
var up = xPrev < touch.pageY;
if( nav<2 && !up ) nav++;
if( nav>0 && up ) nav--;
xPrev = touch.pageY;
$("#container").animate({top:(nav-1)*alto});