Javascript 无法使if-else语句逻辑正常工作
我一直在用jQuery制作一个基本的小图像旋转木马 目前,我的Javascript 无法使if-else语句逻辑正常工作,javascript,jquery,carousel,Javascript,Jquery,Carousel,我一直在用jQuery制作一个基本的小图像旋转木马 目前,我的changeImage函数中的if-else逻辑被卡住了 当用户单击“下一个”链接时,该行中的下一个图像应淡入。幸运的是,当我注释掉if else语句时,我能够实现图像淡出,但这不是我想要的。所以我们知道这是一个逻辑问题 我只是不知道如何在我的if else语句中结合conditions来实现正确的语法,我相信这种逻辑也会更清晰 请复习 function changeImage (newIndex) { var i = newInde
changeImage
函数中的if-else
逻辑被卡住了
当用户单击“下一个”链接时,该行中的下一个图像应淡入。幸运的是,当我注释掉if else
语句时,我能够实现图像淡出,但这不是我想要的。所以我们知道这是一个逻辑问题
我只是不知道如何在我的if else
语句中结合conditions
来实现正确的语法,我相信这种逻辑也会更清晰
请复习
function changeImage (newIndex) {
var i = newIndex;
var current = i;
// `if` user clicks on next then slide image "right"
// something wrong here with my logic..
if ((newIndex === 'next') && i === (current < lengthOfImages - 1)) {
return current + 1;
}
else {
return 0;
}
// fadeout
listOfImages.fadeOut(transitionSpeed).
eq(i).fadeIn(transitionSpeed);
}
// click function on the next link
$('.next').on('click',function() {
changeImage('next');
});
函数changeImage(newIndex){
var i=新指数;
无功电流=i;
//`如果`用户单击下一步,则幻灯片图像为“右”
//我的逻辑有问题。。
if((newIndex=='next')&&i==(当前
如果您能提供一些关于如何解决此问题的反馈,并提供一些解决方案的提示,我们将不胜感激
JSFiddle
将退出该功能。它之后的任何东西都不会运行。如果你真的想返回这个号码,你需要在最后返回
我认为您实际上想要将设置为当前,而不是返回。而且你的逻辑真的没有任何意义。大多数人会这样做:
current++;
if (current >= lengthOfImages) {
current = 0;
}
单击“下一步”时,会发生以下情况:
changeImage
被激发,作为其参数传入'next'
在这个函数中,一个变量i
被声明并设置为'next'
current
变量也被设置为i
,当前设置为'next'
您的if
语句检查newIndex
(传入的参数)是否等于'next'
,以及i
是否等于当前
的布尔值。这是对布尔值的求值,而i
不是布尔值这就是您的函数未正确启动的原因。
条件语句中的return
语句导致函数完成,从而使您的fadeOut
和fadeIn
转换无法执行李>
这部分
if ((newIndex === 'next') && i === (current < lengthOfImages - 1))
if((newIndex=='next')&&i==(当前
总是错误的:
i = 'next'
current = 'next'
(current < lengthOfImages - 1) is a boolean
i='next'
当前=‘下一个’
(当前
因此,==
始终为false,流向return子句。我看到一个字符串被传递到changeImage
,在那里它被分配到i
和current
。稍后,您将current
视为一个数字。我认为你的changeImage
函数需要调整如果你想要一个@eepascarello thax那么所有的逻辑都在这里。所以你是说要去掉返回,所以在if
的内部,我们应该只看到current=1代码>不是返回
当我尝试你的解决方案时,我的逻辑似乎仍然失败。返回到所有图像,单击下一个链接就会消失谢谢,我想我明白你在说什么了。问题越来越严重,因为我们需要I
成为true
,而目前这不是真的。要解决这个问题,我应该从I==(当前
操作符中删除===
,并使用|
来代替?(当前
将返回一个布尔值。i
是一个数字。数字不是布尔值。if
语句的第二个条件逐字检查'next'==true/false
,因此我们不想返回一个数字,我们只想返回一个真实值。这是否意味着我需要删除i
?正确!如果您不想我们正在寻找current
肯定小于lengthOfImages-1
,那么它应该是:if(i&&(current
那么我们的if
语句的条件应该是这个(i&&&(current
,正如您上面所说的,对吗?