2010-11-09 82 views
0

我刚刚开始学习jquery,并做了一些教程,令人沮丧的是,这是我做过的最基本的一个,我可以“不像是会得到它的工作图片库断开为“slideSwitch is not defined”:-(

这是我下面的教程: - 。http://jonraasch.com/blog/a-simple-jquery-slideshow

当我开始向上翻页,并运行在Chrome调试和Firefox中的Firebug我得到的错误: - “Uncaught ReferenceError:slideSwitch is not defined

这是我的代码: -

$(document).ready(function(){ 
    function slideSwitch(){ 
     var $active = $('#slideshow IMG.active'); 
     var $next = $active.next(); 

     $active.addClass('last-active'); 

     $next.css({opacity: 0.0}) 
     .addClass('active') 
     .animate({opacity:1.0}, 1000, function() { 
       $active.removeClass('active last-active'); 
     }); 
    } 
    $(function(){ 
     setInterval("slideSwitch()", 5000); 
    }); 
}); 

据我所知,我已经正确定义了slideSwitch函数,并且在评论框中没有其他人有这个问题。我确信它的事情很简单,我做错了。

+0

你确定你必须以这种方式调用setInterval吗?从我看到的情况来看,最好使用'setInterval(slideSwitch,5000);'如下所述:https://developer.mozilla.org/en/DOM/Window.setInterval – 2010-11-09 13:28:21

+0

尝试从slideSwitch中移除所有内容,然后只需在那里添加一个警报。如果它起作用,那么问题出现在函数内部。 – 2010-11-09 13:30:01

回答

2

slideSwitch功能没有在全球范围内定义的(仅适用于内部的.ready()哈德勒),当你传递一个setInterval()这就是它的期待,而不是这样做:

$(function(){ 
    function slideSwitch(){ 
     var $active = $('#slideshow IMG.active'); 
     var $next = $active.next(); 

     $active.addClass('last-active'); 

     $next.css({opacity: 0.0}) 
     .addClass('active') 
     .animate({opacity:1.0}, 1000, function() { 
       $active.removeClass('active last-active'); 
     }); 
    } 
    setInterval(slideSwitch, 5000); 
}); 

对于记录,这仍然会工作(这里你拥有它,因为它是在一个父范围):

$(function(){ 
    setInterval(slideSwitch, 5000); 
}); 

但是......你已经在document.ready处理,所以re在这里不需要包装。

相关问题