$(document).ready(function(){
$("#all").height($(window).height()-60);
$('a').bind({
mouseover:function(){
$(this).stop().animate({opacity:0.8},500);
},
mouseout:function(){
$(this).stop().animate({opacity:1},500);
},
click:function(){
}
});
// CLOUDS SCROLL
function cloudScroll(){
var current=parseFloat($('#clouds').css('left'));
current += 1;
$('#clouds').css("left",current);
}
var init = setInterval('cloudScroll()', 270);
});
似乎很容易,但无论如何它返回:cloudScroll没有定义。
为什么呢?
答案 0 :(得分:23)
尝试直接传递函数,使用字符串已经过时了:
var init = setInterval(cloudScroll, 270);
答案 1 :(得分:9)
setInterval在全局命名空间中执行,但您的云滚动功能在匿名document.ready函数中定义。
它应该解决你的问题,并且将函数引用传递给setInterval而不是字符串(最终会被唤醒,这对性能更糟)也是更好的形式:
setInterval(function (){ cloudsScroll() }, 270);
您还可以将cloudScroll定义放在区间函数中。
答案 2 :(得分:2)
尝试一下:
var init = setInterval(cloudScroll, 270);
...如果你想传递参数:
setInterval(scrollCloud, 250, clouds2);
修改强> Partrick提到IE不支持以上述方式传递参数。很惊讶我现在没有。无论如何,这使得mqsoh使用了与匿名函数相关的东西。因为您可以使用如下参数运行给定函数:
setInterval(function(){
scrollCloud(clouds2);
}, 250);
答案 3 :(得分:0)
如果传递函数引用而不是字符串,那么它将起作用:
var init = setInterval(cloudScroll, 270);
只是为了表明它有效:http://jsfiddle.net/jonathon/T45Nx/