间隔缺少第一项

时间:2017-12-06 11:44:32

标签: javascript html

我已经通过几个不同的单词在<script type="text/javascript" src=".../js/jquery-3.2.1.min.js"></script> <script type="text/javascript" src=".../js/bootstrap.bundle.min.js"></script> <script type="text/javascript" src=".../js/bootstrap.min.js"></script> 循环中显示了一些js。它主要工作,但是当它第一次加载时它会跳过第二个单词,因此它从“设计”直接转到“电子商务解决方案”,而没有显示“开发”。在第一个循环后它正常工作。我的代码如下。

html:

#changingword

JS:

 <div class="col-lg-8 col-md-8 col-sm-8 col-xs-12">
    <h1>Creative Development</h1>
    <h2 id="changingword">Design</h2>
  </div>

为什么会发生这种情况?

3 个答案:

答案 0 :(得分:3)

问题在于:

$('#changingword').fadeOut(function(){
    $(this).html(words[i=(i+1)%words.length]).fadeIn("slow");
});

您正在使用计算中的结果值更新i然后

在使用后更新i

$('#changingword').fadeOut(function(){
    $(this).html(words[i%words.length]).fadeIn("slow");
    i++;
});

答案 1 :(得分:0)

我认为问题在于,首次通过单词[i =(i + 1)%words.length]将等同于单词[1]而不是单词[0]。

您可以增加但通过执行

返回预增量值
$('#changingword').fadeOut(function(){
            $(this).html(words[i++%words.length]).fadeIn("slow");
        });

答案 2 :(得分:0)

在同一行中增加和使用结果可能很棘手,您需要确定如何计算表达式。

变化:

words[i=(i+1)%words.length]

为:

words[i=(++i)%words.length]

并设置i=-1;开始。

现在(++i)确保我在表达式的其余部分之前立即递增1,这就是我们需要从-1开始的原因。从那里一切都很好。

如果你想用增量保持表达式而不是将增量分成另一行,那么它就是已经发布的答案的替代方案。

++ii++的一般差异在许多语言中都是相同的,所以值得研究:

SO post with quick explanation

SO post with better explanation but in diff language