目前我有这段代码
setTimeout(function() { $('#hideMsg').fadeOut('fast'); }, 2000);
我可以将倒数计时器放2秒钟吗?
像
<div id="hideMsg">
The entry you posted not valid.
This Box will Close In 2 Seconds
</div>
“此框将在2秒后关闭”将自动更改为2秒1秒
答案 0 :(得分:52)
使用setInterval代替setTimeout,然后使用clearInterval
的组合var sec = 2
var timer = setInterval(function() {
$('#hideMsg span').text(sec--);
if (sec == -1) {
$('#hideMsg').fadeOut('fast');
clearInterval(timer);
}
}, 1000);
HTML
<div id="hideMsg">
The entry you posted not valid.
This Box will Close In <span>2</span> Seconds
</div>
让它变得更好。
var sec = $('#hideMsg span').text() || 0;
var timer = setInterval(function() {
$('#hideMsg span').text(--sec);
if (sec == 0) {
$('#hideMsg').fadeOut('fast');
clearInterval(timer);
}
}, 1000);
所以时间取决于<span>
内的内容。例如,<span>2</span>
为2秒,<span>5</span>
为5秒,<span>60</span>
为1分钟。
答案 1 :(得分:1)
注意:强>
在我阅读他的答案之前,我没有意识到这与Reigel的答案有多相似。基本上,唯一的区别是我使用 .delay()
来隐藏div
而不是间隔。不同的选择...
如果您将初始数字放在<span>
中,则该数字将从该数字开始减至零:
$(function() {
// Number of seconds counter starts at is what's in the span
var timer, counter = $("#hideMsg span").text();
// Delay the fadeout counter seconds
$('#hideMsg').delay(counter * 1000).fadeOut('fast');
// Update countdown number every second... and count down
timer = setInterval(function() {
$("#hideMsg span").html(--counter);
if (counter == 0) { clearInterval(timer)};
}, 1000);
});
这使用了jQuery的原生 .delay()
,它使用 setInterval()
,当它变为零时停止。
答案 2 :(得分:0)
在一秒钟之后再做一次设置超时并设置div的.html(),如下所示:
setTimeout(function() { $('#hideMsg').html('The entry you posted not valid. <br /> This Box will Close In 1 Second'); }, 1000);
将它们放在一个函数中并像这样运行onload函数:
<body onload="function_name()">
希望这会有所帮助。