图片库被打破为“slideSwitch未定义”:-(

时间:2010-11-09 13:21:53

标签: javascript jquery image-gallery

我刚刚开始学习Jquery,并且做了一些教程,令人沮丧,这是我做过的最基本的教程之一,而且我似乎无法让它工作。

这是我正在关注的教程: - http://jonraasch.com/blog/a-simple-jquery-slideshow

当我启动页面,并在Chrome中运行调试和firefox中的firebug时,我收到错误: -    “未捕获的ReferenceError:未定义slideSwitch

这是我的代码: -

$(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,并且注释框中没有其他人遇到此问题。我确信它的确很简单,我做错了。

1 个答案:

答案 0 :(得分:2)

您的slideSwitch函数未在全局范围内定义(仅在.ready() hadler内),并且当您将字符串传递给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处理程序中了,因此这里不需要包装器。