开发者问题收集

jQuery 无限动画导致调用堆栈错误

2019-06-21
73

我正在使用最新版本的 jQuery 和 jQuery color。我试图使用动画来无限地改变容器的颜色。但是当我运行以下代码时,我收到错误:“Uncaught RangeError:超出最大调用堆栈大小”。动画循环工作正常,但它阻止了其余 jQuery 代码的执行。我不知道堆栈溢出来自哪里..!

  let $container = $("#container");
  let colours = ["56, 68, 97", "97, 56, 80", "42, 74, 53", "104, 66, 44"];

  (function colourAnimation() {
    colours.forEach((colour) => {
      $container.animate({"color": "rgb(" + colour + ")",
                          "background-color": "rgba(" + colour + ", 0.2)",
                          "border-color": "rgba(" + colour + ", 0.7)",
                        }, 2500);
    });
    $container.animate({}, 0, "", colourAnimation);
  })()
2个回答

您的 function colourAnimation() 以对方法 animate 的调用结束,该方法的第四个参数已传递 colourAnimation
文档 @ https://api.jquery.com/animate/ 表明第四个参数是

A function to call once the animation is complete, called once per matched element.

代码当然会无限递归?

robut
2019-06-21

如果您希望代码无限运行,只需使用 setInterval(function, time) ,其中时间以毫秒为单位。更好的解释可以在 此处 找到。

Rojo
2019-06-24