使用javascript提亮效果

时间:2013-07-16 15:03:14

标签: javascript jquery

我想在JavaScript中使用递归来产生无限循环。事实上,我希望无休止地为图像提供一种来来往往的效果。

我们先来看一些代码:

function lightening(){
    $('#pic_holder').fadeOut(250).fadeIn(250);
    setTimeout('lightening', 250);
}

这个函数,正如它所写,应该

  • 应用fadeOut(250)fadeIn(250)效果;
  • 使用setTimeout函数,该函数必须递归调用lightening函数,从此重新应用[ fadeOut-fadeIn效果 setTimeout ]代码块。

这一点,你会同意,应该无限制地进行,但事实并非如此。

这是full test code, with HTML,您可以注意到,它仅应用fadeOut-fadeIn效果一次。

我做错了什么?

4 个答案:

答案 0 :(得分:7)

应该做的是:

function lightening(){
  $('#pic_holder').fadeOut(250).fadeIn(250, lightening);
}

当淡入完成时,这将使下一个周期开始。将您自己的超时与jQuery动画调用所暗示的超时混合是棘手的,通常是不必要的。在你的情况下,你在前一个循环中途开始一个新的循环,直到250毫秒之后才会生效。

答案 1 :(得分:6)

setTimeout的第一个参数可以是:

  • 要调用的函数;或
  • 要执行的JavaScript字符串

您的函数未被调用,因为您的名称只是在字符串中。删除单引号。

function lightening(){
    $('#pic_holder').fadeOut(250).fadeIn(250);
    setTimeout(lightening, 250);
}

See the Mozilla Documentation正确使用。

答案 2 :(得分:3)

不要使用2个具有间歇性错误或必须过于慷慨的竞争计时器,而是使用回调:

function lightening(){
    $('#pic_holder').fadeOut(250).fadeIn(250, lightening);
}

答案 3 :(得分:1)

删除引用。

setTimeout(lightening, 250);