为什么没有定义这个javascript函数
Why is this javascript function not defined?
我有这个javascript代码:
$(function(){
var currentCarouselItem = 1; //set carousel to first slide
var runCarousel = 1;
$(window).load(function(){
setTimeout('autoScroll()', 10000);
});
function autoScroll(num){
if (runCarousel == 1) {
$('.carouselItem.' + currentCarouselItem).animate({left: '975px'}, 'slow', function(){
$(this).removeClass('active');
$(this).attr('style','');
var nextItem = currentCarouselItem + 1;
if (nextItem == 7) {
nextItem = 1;
}
$('.carouselItem.' + nextItem).animate({left: '110px'}, 'slow', function(){
$(this).addClass('active');
})
})
}
}
})
每当我运行该站点时,它都会抛出控制台错误:Uncaught ReferenceError: autoScroll is not defined
知道为什么它认为它没有定义吗?
setTimeout('autoScroll()', 10000);
为什么要引用它?
setTimeout(autoScroll, 10000);
这是为初学者准备的。
此外,这里还有范围界定问题。
我可以试着帮你回答,但我认为这家伙做得更好:
JQuery,setTimeout不工作
我认为这是因为autoScroll
函数位于最外层$(function(){})
创建的闭包内部。因此eval(用于在setTimeout
中计算字符串(找不到它,因为它在"全局"范围内运行。
您可以将autoScroll
的定义移动到外部。
此外,正如jcolebrand建议的那样,删除引号。
我认为这是因为当您传入一个字符串作为setTimeout()
的第一个参数时,javascript基本上从该字符串的全局范围运行eval()
。autoScroll
生活在$(function() { })
的范围内,因此无法从全局范围"看到"。
尝试将其更改为setTimeout(autoScroll, 10000);
您的代码有几个问题,但没有定义autoScroll
函数的原因是,它是在文档就绪函数的范围内定义的,但在文档就绪超出范围而没有适当的闭包后,通过eval
执行。
$('.carouselItem.' + currentCarouselItem).animate({left: '975px'}, 'slow', function(){
$(this).removeClass('active');
$(this).attr('style','');
var nextItem = currentCarouselItem + 1;
if (nextItem == 7) {
nextItem = 1;
}
$('.carouselItem.' + nextItem).animate({left: '110px'}, 'slow', function(){
$(this).addClass('active');
});
});
对于初学者来说,您需要在这样的函数末尾使用分号,
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 正在全局范围中查找JavaScript函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 如何调用这个匿名 JavaScript 函数
- 通过Ajax将JavaScript函数传递给PHP文件
- 在javascript函数中设置全局变量
- 如何在执行此特定onclick事件时执行JavaScript函数
- 使用javascript函数在页面初始化后加载jquery
- javascript函数同步
- 如何将一个JavaScript函数回调为多个函数
- 在javascript函数中使用php变量
- 代码背后调用一个JavaScript函数的按钮点击-C#
- 将JavaScript函数与HTML分离
- 组合两个javascript函数
- 在 Java 中的 JavaScript 函数中插入 Wicket 值
- javascript函数内部的代码用逗号而不是分号分隔
- href属性内的javascript函数
- 使用html表单中的参数调用JavaScript函数
- 分析Javascript函数中的多个对象
- javascript函数的:和=之间的区别