【问题标题】:Javascript setInterval taking too long to resetJavascript setInterval 重置时间过长
【发布时间】:2013-10-15 23:59:47
【问题描述】:

嘿,我有一个面板 (br_Panel),其中包含四个 div,类别为“smallPanel”,id 为 br_Panel1、br_Panel2 等,它们大小相同且相互重叠。当函数运行时,每 5 秒淡出一个并显示下面的一个,当它们全部淡出时,它们都以淡入淡出返回。问题是最后一个 div 的淡出和所有它们的淡入之间的暂停是 15 秒,是每个 div 离开所需时间的三倍。如何将重置时间的暂停减少到 5 秒?

setInterval(function() {
    if(i < 0) {
        $('#br_Panel').find($('.smallPanel')).fadeIn();
        i = 5;
    }
    else
        i--;
    $('#br_Panel').find($('#br_Panel' + i)).fadeOut();
}, 5000);

这是 html(如果有帮助,每个最里面的 div 都绝对定位到 #br_Panel 以便它们相互重叠):

<div class="height1 panel" id="br_Panel">
    <div class="smallPanel" id="br_Panel1">content</div>
    <div class="smallPanel" id="br_Panel2">content</div>
    <div class="smallPanel" id="br_Panel3">content</div>
    <div class="smallPanel" id="br_Panel4">content</div>
</div>

【问题讨论】:

  • 你能展示你的 HTML 吗?

标签: javascript jquery setinterval reset


【解决方案1】:

您提到您的 br_Panel 包含四个类 smallPanel 的 div,但您的间隔函数将在 i 重置之前运行六次(5、4、3、2、1、0)。可能是您的函数运行的次数比需要的多 2 次,这导致您的延迟比应有的时间长 10 秒。

作为附加说明,当使用 .find() 时,你只需要传入你正在使用的字符串 css 选择器,而不是 enter jQuery 对象:

$('#br_Panel').find('.smallPanel').fadeIn();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 2012-08-23
    • 1970-01-01
    相关资源
    最近更新 更多