2010-11-16 20 views
2

我一直在试图弄清楚这一点,但现在想我会在这里发布,看看我是否可以最终与我setInterval了解这个问题。jQuery:在setInterval调用获取奇怪的错误...是我的语法错误?

在这种情况下,我在本文档中使用jQuery 1.4.4。

考虑以下几点:

var MS = {}, 
    MS.timer = 1200; // this both would be user accessible by the plugin 

// if the timer option is set then activate slideshow 
if (MS.timer) { setInterval("go(2,'right')" , MS.timer); } 

// show the slide (as defined by the pass ins) 
function go(slideNumber, direction) { 
    if (!paused || !running) { 
     console.log('run!'+', '+slideNumber+' , '+direction); 
    } 
} 

然而,这导致:

go is not defined 

这是 '正确' 正在记录每1200毫秒。那么如何运行我的功能go(),包括传入slideNumber, direction的值?

回答

3

试试这个:

if (MS.timer) { setInterval(function() { go(2,'right'); }, MS.timer); } 

无法从你贴什么说的,但我猜测,该代码是所有里面的一些功能的地方。 “去”功能必须在全球范围内才能发挥作用。当你传递一个字符串时,解释器会在定时器触发时在全局上下文中进行评估。通过使用像我提供的示例中的实际函数,您可以捕获该闭包中的本地“去”。

+0

谢谢,这确实起作用。 – Jannis 2010-11-16 21:53:15

0

尝试:

setInterval(function() { 
    go(2, 'right'); 
}, MS.timer); 
0

试试这个:

window.setInterval(go, MS.timer, [2, 'right']); 
+1

我认为这是一个Firefox的事情,即使如此,我认为参数是单独传递,而不是在一个单一的数组。 – Pointy 2010-11-16 20:56:02

+0

你说得对。这在IE中不起作用。 – 2010-11-16 20:58:55