Javascript 如何使用jQuery每5秒生成一个动画?
好吧,我对jQuery没有太多经验。我在这里试图做的是每5秒更改一次页面背景(实际上是10秒,但5秒用于测试)。除此之外,我还需要一个倒计时动画,如页面下方的一个栏。我每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
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);}