我在Win 7的每个浏览器中都测试了这个脚本。它不仅适用于Firefox(版本3.6.13)。
除了返回随机数的Firefox之外,警报框在所有浏览器中都返回“undefined”。这是脚本
function nextSlide(nav){
alert(nav);
}
jQuery(function(){
var set = setInterval(nextSlide, 2000);
});
答案 0 :(得分:5)
额外参数是回调延迟的毫秒数。来自documentation:
回调参数
setInterval()会将回调函数调用后的毫秒数传递给回调函数,如果它希望将其他内容作为参数,则可能会混淆它。要回避这个问题,请使用匿名函数来调用您的回调。
修复就是写这个:
var set = setInterval(function() { nextSlide(); }, 2000);
答案 1 :(得分:1)
Mark Byers在使用Mozilla文档解释时是正确的。
但是,这是Firefox扩展程序。 WindowTimers interface - 至少与HTML5 工作草案中的一样 - 实际上有不同的要求。当然,因为这是一个不稳定的领域......
handle = window。 setInterval(handler [,timeout [,arguments]])
计划超时以在每个超时毫秒运行处理程序。 任何参数都会直接传递给处理程序。
因此,可以看到Firefox违反了这一点,因为arguments.length
即使“没有参数”通过也是{。
我相信HTML4它只是在没有任何“官方标准”定义的情况下实现 - 或者至少没有我所知道的 - 并且,在这种情况下,Firefox可以做任何它喜欢的事情。我很乐意进行更正/参考。
修改强>
Firefox 确实支持参数传递,正如Neil所指出的那样,arguments.length
总是比传递给“偏移”数据的参数数量多一个 - 没有魔法正在arguments.length
完成(这本身就是非常可怕的)。
重要的是要记住:在计时器回调或面对浏览器差异时使用arguments.length
时不要使用和/或小心。 (这与其他事件回调一致)。