Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法使if-else语句逻辑正常工作_Javascript_Jquery_Carousel - Fatal编程技术网

Javascript 无法使if-else语句逻辑正常工作

Javascript 无法使if-else语句逻辑正常工作,javascript,jquery,carousel,Javascript,Jquery,Carousel,我一直在用jQuery制作一个基本的小图像旋转木马 目前,我的changeImage函数中的if-else逻辑被卡住了 当用户单击“下一个”链接时,该行中的下一个图像应淡入。幸运的是,当我注释掉if else语句时,我能够实现图像淡出,但这不是我想要的。所以我们知道这是一个逻辑问题 我只是不知道如何在我的if else语句中结合conditions来实现正确的语法,我相信这种逻辑也会更清晰 请复习 function changeImage (newIndex) { var i = newInde

我一直在用jQuery制作一个基本的小图像旋转木马

目前,我的
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
    ,正如您上面所说的,对吗?