使用javascript无尽的即将到来的文字

时间:2012-01-29 16:52:43

标签: javascript jquery

我的任务是在div块内创建带有文本块的页面。 这是我的解决方案:

  <script>
            var startOffset = 0;
            var startOffsetPlus;
            var startOffsetMinus;
            $(document).ready(function () {

                startOffset = $(".carousel-item").last().offset().top;
                startOffsetPlus = "+="+ startOffset +"px";
                startOffsetMinus = "-="+ startOffset +"px";
                //endless loop call
                setInterval('beginEndlessLoop()', 1000/*Starting delay in ms*/);
            });
            function beginEndlessLoop(){
                setInterval('moveTextUp()', 0 /*ms*/);
            }
            function moveTextUp() {
                $(".carousel-block").animate(
                    {"top": startOffsetMinus}, 
                    {
                        duration: 10000/*ms*/, 
                        easing: "linear"}
                    );
                //move blocks to start position
                $(".carousel-block").animate({"top": startOffsetPlus}, 0/*ms*/);
            }
</script>

此解决方案正常。但问题是这个脚本越来越多地占用处理器和内存。我不是一个javascript程序员。有谁能告诉我如何调用垃圾收集器或什么? =)

2 个答案:

答案 0 :(得分:1)

你不需要setInterval()

在$ .animate中使用回调

function moveTextUp()
{
 $(".carousel-block").animate(
                    {"top": startOffsetMinus}, 
                    {
                        duration: 10000/*ms*/, 
                        easing: "linear",
                        complete: moveTextUp
                    }

                    );
}

答案 1 :(得分:0)

完成。作品!

 <script>
            var startOffset = 0;
            var startOffsetPlus;
            var startOffsetMinus;
            $(document).ready(function () {
                startOffset = $(".carousel-item").last().offset().top;
                startOffsetPlus = "+="+ startOffset +"px";
                startOffsetMinus = "-="+ startOffset +"px";
                window.setTimeout(function(){moveTextUp()}, 3000);
            });
            function moveTextUp() {
                $(".carousel-block").animate({"top": startOffsetMinus}, 10000, 'linear', function() {
                    $(".carousel-block").animate({"top": startOffsetPlus}, 0);
                    moveTextUp();
                });
            }
</script>