Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 简单循环JQuery_Javascript_Jquery_Html_Loops_Setinterval - Fatal编程技术网

Javascript 简单循环JQuery

Javascript 简单循环JQuery,javascript,jquery,html,loops,setinterval,Javascript,Jquery,Html,Loops,Setinterval,我知道这已经被问了好几次了,但我就是不明白。 因此,情况如下: $ = jQuery; var loop = function() { $('#content').delay(800).css('background-color', "#B24296"); $('#content').delay(1600).css('background-color', "#AEB404"); $('#content').delay(2400).css('background-c

我知道这已经被问了好几次了,但我就是不明白。 因此,情况如下:

$ = jQuery;
    var loop = function() {
    $('#content').delay(800).css('background-color', "#B24296");
    $('#content').delay(1600).css('background-color', "#AEB404");
    $('#content').delay(2400).css('background-color', "#04B404");
    loop();
}
$(document).ready(function() {
    loop();
此设置为我提供了一个“未捕获范围错误:超过最大调用堆栈大小” 我也试过:

var loop = function() {
    $('#content').delay(800).css('background-color', "#B24296", function() {
        $('#content').delay(1600).css('background-color', "#AEB404", function() {
            $('#content').delay(2400).css('background-color', "#04B404");
        });
    });
}
$(document).ready(function() {
    setInterval(loop,3200);
使用此代码,只有第一次颜色更改发生,但其余部分不会发生。 不幸的是,所有这些都不能简单地改变背景颜色。。。是否有人知道解决方案,或者可以解释为什么不使用这种方法

编辑: 设法让它像这样工作:

function color(t) {
    $("div").delay(t*1).queue(function(n) {
         $('#green').css('background-color', "#B24296");
        n();
    });

    $("div").delay(t*2).queue(function(n) {
         $('#green').css('background-color', "#AEB404");        n();
    });

    $("div").delay(t*3).queue(function(n) {
         $('#green').css('background-color', "#04B404");
        n();
    });
    setTimeout(function() {
       color(500);
    }, 500);
}

color(500);

在您的第一次尝试中,函数loop()会无限次地调用自身,从而导致您报告的错误

至于为什么css/delay组合不起作用,根据这个答案:delay()与动画fx队列一起工作,对css()调用没有影响

同样,根据中的解决方案,这里是您的用例()的工作代码:


第一个是无限循环。尾部递归:您也不能在
.css()
上执行
.delay()
。。。它只是跳到了结尾。首先,谢谢你。第二,这会改变颜色三次,但只有一次,但实际上我希望它像一个不受干扰的循环一样一次又一次地改变,但不会导致错误,您可以添加
setTimeout(循环,500)在第三次调用next()以实现此结果之前。我将对我答案中的代码进行编辑。非常感谢!这是我理解的第一个解决方案!没问题,我很高兴这有帮助!
var loop = function() {
  $('#content').delay(800).queue(function(next){
      $(this).css('background-color', "#B24296");
      next();
  }).delay(1600).queue(function(next){
      $(this).css('background-color', "#AEB404");
      next();
  }).delay(2400).queue(function(next){
      $(this).css('background-color', "#04B404");
      setTimeout(loop, 500);
      next();
  });
}

$(function(){
    loop(); 
});