我已经通过几个不同的单词在<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>
为什么会发生这种情况?
答案 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开始的原因。从那里一切都很好。
如果你想用增量保持表达式而不是将增量分成另一行,那么它就是已经发布的答案的替代方案。
++i
和i++
的一般差异在许多语言中都是相同的,所以值得研究: