我刚刚开始学习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,并且注释框中没有其他人遇到此问题。我确信它的确很简单,我做错了。
答案 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
处理程序中了,因此这里不需要包装器。