我正在尝试每个&setTimeout函数的简单操作。我希望一个名字的字母在分开的(渐进的)时间出现。假设NAZ字母应该以这种方式出现,第一个N第二个A最后一个Z。但是,在这里我可以看到输出是AZN然后是ZNA然后是NAZ。我的感觉是,我对“每个”实际上是如何工作的理解是错误的。但是,控制台中的输出完全按照我的预期显示。看看这个。
$('div.promise').each(function(index, promise){
setTimeout(function()
{
$('.showPromise').append(promise);
console.log($(promise).text());
$('.promise').css({"display":"block"})},1000*(index+2));
});}
https://jsfiddle.net/sanje/425konu3/17/
如何显示控制台中显示的输出? &为什么所有的div都在特定时间一起出现?请帮助我找出错误。谢谢!
最佳答案
问题是您的setTimeout
中的以下语句:
$('.promise').css({"display":"block"})
它使所有
promise
类的div一起可见。您应该改用以下代码:$(promise).css({"display":"block"})
var showAnimation=function(){
$('div.promise').each(function(index, promise){
setTimeout(function(){
// $('.showPromise').append(promise);
console.log($(promise).text());
$(promise).css({"display":"block"})
},1000*(index+2));
});//each()
}//showAnimation()
$('button').on('click', showAnimation);
.promise {
display: none;
padding: 10px;
}
.showPromise {
background-color: red;
margin: 10px;
display: flex;
height: 100px;
width: auto;
}
.as-console-wrapper{display: none !important;}
<script
src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
<button>call</button>
<div class="showPromise">
<div class="promise">N</div>
<div class="promise">A</div>
<div class="promise">Z</div>
</div>