轮播脚本中的 Jquery 函数定义

发布于 2024-11-25 08:30:44 字数 1301 浏览 1 评论 0原文

我有一个用于带有循环的轮播图像的脚本

$(document).ready(function() {

//rotation speed and timer
var speed = 5000;
var run = setInterval(rotate(), speed);   

//grab the width and calculate left value
var item_width = $('#slides li').outerWidth(); 
var left_value = item_width * (-1); 

//move the last item before first item, just in case user click prev button
$('#slides li:first').before($('#slides li:last'));

//set the default item to the correct position 
$('#slides ul').css({'left' : left_value});

//if user clicked on next button
function rotate() {
    //get the right position
        var left_indent = parseInt($('#slides ul').css('left')) - item_width;

        //slide the item
        $('#slides ul').animate({'left' : left_indent}, 3000, function () {

            //move the first item and put it as last item
            $('#slides li:last').after($('#slides li:first'));                  

            //set the default item to correct position
            $('#slides ul').css({'left' : left_value});

        });

        //cancel the link behavior
        return false;
}       

});

但我在 firebug 中收到此 javascript 错误:

无用的 setInterval 调用(参数周围缺少引号?) [Interrompi per questo errore] var run = setInterval(rotate(), speed);

我认为这是旋转函数定义的错误!

I have this script for a Carousel Images with LOOP

$(document).ready(function() {

//rotation speed and timer
var speed = 5000;
var run = setInterval(rotate(), speed);   

//grab the width and calculate left value
var item_width = $('#slides li').outerWidth(); 
var left_value = item_width * (-1); 

//move the last item before first item, just in case user click prev button
$('#slides li:first').before($('#slides li:last'));

//set the default item to the correct position 
$('#slides ul').css({'left' : left_value});

//if user clicked on next button
function rotate() {
    //get the right position
        var left_indent = parseInt($('#slides ul').css('left')) - item_width;

        //slide the item
        $('#slides ul').animate({'left' : left_indent}, 3000, function () {

            //move the first item and put it as last item
            $('#slides li:last').after($('#slides li:first'));                  

            //set the default item to correct position
            $('#slides ul').css({'left' : left_value});

        });

        //cancel the link behavior
        return false;
}       

});

But I receive this javascript error in firebug:

useless setInterval call (missing quotes around argument?)
[Interrompi per questo errore] var run = setInterval(rotate(), speed);

I thing it's an error of rotate function definition!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

萌︼了一个春 2024-12-02 08:30:45

这意味着你应该这样写:

 var run = setInterval(rotate, speed);   

而不是

 var run = setInterval(rotate(), speed);   

因为你需要将函数的引用传递给 setInterval,你传递的是函数rotate()的返回值;

This means the you should write:

 var run = setInterval(rotate, speed);   

instead of

 var run = setInterval(rotate(), speed);   

because you need to pass the reference of a function to setInterval, what you are passing is the return value of the function rotate();

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文