Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.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每5秒生成一个动画?_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 如何使用jQuery每5秒生成一个动画?

Javascript 如何使用jQuery每5秒生成一个动画?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,好吧,我对jQuery没有太多经验。我在这里试图做的是每5秒更改一次页面背景(实际上是10秒,但5秒用于测试)。除此之外,我还需要一个倒计时动画,如页面下方的一个栏。我每5秒改变一次背景,但我无法让酒吧动画正常工作。它只发生一次或两次,然后再也不会发生:// 这是条形图动画的代码 var initialWidth = 0; var initialHeight = 0; var firstMeasurements = function(){ initialHeight = $(".count

好吧,我对jQuery没有太多经验。我在这里试图做的是每5秒更改一次页面背景(实际上是10秒,但5秒用于测试)。除此之外,我还需要一个倒计时动画,如页面下方的一个栏。我每5秒改变一次背景,但我无法让酒吧动画正常工作。它只发生一次或两次,然后再也不会发生://

这是条形图动画的代码

var initialWidth = 0;
var initialHeight = 0;

var firstMeasurements = function(){
  initialHeight = $(".countdown").height() + "px";
  initialWidth = $(".countdown").width() + "px";
}

$(function(){
        var bar = $(".countdown");

        function countdown() {
              bar.animate({"width":"0px"}, 5000);
        }

        function restartCountdown() {
              bar.css("width", initialWidth);
              countdown();
              setTimeout(restartCountdown, 5000);
        }

        bar.css("height", initialHeight);
        restartCountdown();
});
“倒计时”是我想每5秒制作一次动画的div类

有人能告诉我我的代码有什么问题吗?
谢谢。

给你。。。这应该足以让您开始:)


给你。。。这应该足以让您开始:)

而不是:

setTimeout(restartCountdown, 5000);
你应使用:

setInterval(restartCountdown, 5000);
因为
setTimeOut()
只会触发一次,但是
setInterval()
总是每5秒触发一次

注意:

在本例中,您正在递归调用
restarcountdown()
,因此如果要使用
setInterval()
,则需要将函数更改为以下内容:

    function restartCountdown() {
          bar.css("width", initialWidth);
          setInterval(countdown, 5000);
    }
通过这种方式,您将初始化宽度,然后在5秒后启动
倒计时()

而不是:

setTimeout(restartCountdown, 5000);
你应使用:

setInterval(restartCountdown, 5000);
因为
setTimeOut()
只会触发一次,但是
setInterval()
总是每5秒触发一次

注意:

在本例中,您正在递归调用
restarcountdown()
,因此如果要使用
setInterval()
,则需要将函数更改为以下内容:

    function restartCountdown() {
          bar.css("width", initialWidth);
          setInterval(countdown, 5000);
    }

这样,您将初始化宽度,然后在5秒后启动
倒计时()。每N秒一次的问题;)

实际上,今天您只能使用`setTimeInterval'``

setInterval(function(){ 
    console.log("5 secs have passed"); 
}, 5000/*5000 ms=5 seconds*/);
但是要小心!在
setInterval
期间,Javascript不能执行任何其他操作。 浏览器javascript在单个线程中运行。因此,如果您执行的某项操作耗时太长,它将冻结浏览器

Javascript的未来将带来多线程

为了能够在等待5秒钟的时间内完成任务,我使用了异步请求等策略。好吧,我可以问你是否不想在5秒钟内被冻住


一些书

哦。每N秒一次的问题;)

实际上,今天您只能使用`setTimeInterval'``

setInterval(function(){ 
    console.log("5 secs have passed"); 
}, 5000/*5000 ms=5 seconds*/);
但是要小心!在
setInterval
期间,Javascript不能执行任何其他操作。 浏览器javascript在单个线程中运行。因此,如果您执行的某项操作耗时太长,它将冻结浏览器

Javascript的未来将带来多线程

为了能够在等待5秒钟的时间内完成任务,我使用了异步请求等策略。好吧,我可以问你是否不想在5秒钟内被冻住


一些书

以下是完整的代码


这是完整的代码


您正在查找。您需要在document ready中调用
firstMeasurements
handler@D4V1D,OP使用递归,即调用
restarcountdown
内部
restarcountdown
因此
setInterval
不可用required@Satpal:感谢您通过
setInterval()指出这一点不应该更精确以达到OP的要求吗?@D4V1D,同意
setInterval
将更精确。您正在寻找。您需要在document ready中调用
firstMeasurements
handler@D4V1D,OP使用递归,即调用
restartCountdown
内部
restartCountdown
因此
setInterval
不是required@Satpal:感谢您通过
setInterval()指出这一点
不应该更准确地实现OP想要的吗?@D4V1D,同意
setInterval
将更准确。注意:OP使用递归,即调用
restartCountdown
内部
restartCountdown
因此
setInterval
不需要函数Countdownlop(interval){setTimeout(Countdownlop,interval);}注意:OP使用递归,即调用
restartCountdown
内部
restartCountdown
因此
setInterval
不需要函数countdownLoop(interval){setTimeout(countdownLoop,interval);}