使用fadeLoop显示和隐藏div的工具提示定时教程

时间:2012-12-17 15:39:22

标签: javascript jquery loops html

因此,我创建了一个在线工具提示教程,并将每个工具提示设置为淡入并以7秒的间隔淡出。一切都很好,除了当第一次打开交互式教程的按钮时,所有工具提示在屏幕上闪烁一秒钟 - 我不想发生这种情况。关于如何消除这种情况的任何想法?

另外,我想在一个工具提示淡出并且下一个淡入淡出时添加一个300ms的重叠。如何调整代码以允许它?

这是我控制fadeLoop的Javascript:

<script src="jquery.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
    fadeLoop()
    function fadeLoop() {

        var counter = 0,
            divs = $('.fader').hide(),
            dur = 300;

        function showDiv() {
            $("div.fader").fadeOut(dur) // hide all divs
                .filter(function(index) {
                    return index == counter % divs.length;
                }) // figure out correct div to show
                .delay(dur) // delay until fadeout is finished
                .fadeIn(dur); // and show it
            counter++;
        }; // function to loop through divs and show correct div
        showDiv(); // show first div    
        return setInterval(function() {
            showDiv(); // show next div
        }, 7 * 1000); // do this every 7 seconds    
    };

    $(function() {
        var interval;

        $("#start").click(function() {
            if (interval == undefined){
                interval = fadeLoop();
                $(this).val("Stop");
            }
            else{
                clearInterval(interval);
                $(this).val("Start");
                interval = undefined;
            }
        });
    });
    });
    </script>

这是我的HTML:

<!--#include file="header.asp"-->
<% if Request("interactive") = "on" then %>
<form name="tutorial">

<div class="fader"><div class="arrow-w arrowlocation1" style="font-size:1em;" ></div><div id="tutorial1" class="tutorial createquestion1">Start by creating a title and selecting a folder for your question to be stored in.</div></div>

<div class="fader"><div class="arrow-w arrowlocation2" style="font-size:1em;" ></div>
<div id="tutorial2" class="tutorial createquestion2">Categories are key to your reporting effectiveness, be sure to include categories that relate to this question.</div></div>

<div class="fader"><div class="arrow-w arrowlocation3" style="font-size:1em;" ></div>
<div id="tutorial3" class="tutorial createquestion3">Select your options and/or upload an attachment (file, video or audio).</div></div>

<div class="fader"><div class="quicktiptitle quicktiplocation4">QUICK TIP</div><div class="arrow-n arrowlocation4" style="font-size:1em;" ></div>
<div id="tutorial4" class="quicktip createquestion4">To create questions easier update your question preferences in your account area options.</div></div>

<div class="fader"><div class="arrow-w arrowlocation5" style="font-size:1em;" ></div>
<div id="tutorial5" class="tutorial createquestion5">Your rationale can be used to provide feedback to students on this question and you also can use internal comment to track notes on changes, updates, textbook information and more.</div></div>

<div class="fader"><div class="arrow-e arrowlocation6" style="font-size:1em;" ></div>
<div id="tutorial6" class="tutorial createquestion6">Write your questions, answers and you are ready to go.</div></div>

<div class="fader"><div class="arrow-w arrowlocation7" style="font-size:1em;" ></div>
<div class="quicktiptitle quicktiplocation7">QUICK TIP</div>
<div id="tutorial7" class="quicktip createquestion7"> Click on this icon to open and close sections that you don't use. These will remain closed whenever you visit this page until you open them again.</div></div></form>

有什么想法吗?

克里斯

1 个答案:

答案 0 :(得分:1)

当我在jsFiddle中运行时,似乎运行正常。也许在$(document).ready()火灾之前可以看到div?您可以尝试最初使用css隐藏 .fade div,以便在运行jQuery脚本之前不会显示它们。

修改

好的,在您发表评论之后,我在jsFiddle进行了测试,似乎可以解决您的问题。基本上,我使用CSS隐藏div,然后在hide()函数调用之前将可见性设置为 visible

所以在CSS中:

.fader
{
    visibility:hidden;
}​

然后在脚本中,替换:

divs = $('.fader').hide()

使用:

divs = $('.fader').css('visibility','visible').hide()

然后它应该工作