嗨,我正在尝试创建一个简单的倒计时
这是我的代码,但它不起作用。
你能帮我找到问题吗?
function count() {
for (var cc=20,cc > 0,cc--) {
document.getElementById("cco").innerHTML=cc;
}
}
count();
答案 0 :(得分:11)
您使用的是逗号而不是分号。
for (var cc=20,cc > 0,cc--)
应该是
for (var cc=20;cc > 0;cc--)
但是,这可能不会按照您的想法进行,因为循环将立即计数到0(因此用户甚至不会看到倒计时)。我猜你想要的东西是:
var cc = 20;
var interval = setInterval(function()
{
document.getElementById("cco").innerHTML = -- cc;
if (cc == 0)
clearInterval(interval);
}, 1000);
有关详细信息,请参阅setInterval和clearInterval。
答案 1 :(得分:4)
(至少)有两个错误。
第一个是语法:在for循环中,参数由;
分隔,而不是,
。语法正确的代码如下所示:
function count() {
for (var cc=20;cc > 0;cc--) {
document.getElementById("cco").innerHTML=cc;
}
}
其次,你没有倒计时,但反复覆盖同一个元素,没有任何时间让用户看到结果。
更好的方法是在这里使用setTimeout()
,看起来像这样:
var cc = 20;
function count() {
document.getElementById("cco").innerHTML=cc;
if ( cc > 0 ) {
setTimeout( count, 1000 );
}
}
setTimeout( count, 1000 );
setTimeout()
方法为浏览器留出一些时间来实际呈现您的修改(并让用户看到它)。
答案 2 :(得分:1)
在for循环中使用','
更改';'
function count() {
for (var cc=20;cc > 0;cc--) {
document.getElementById("cco").innerHTML=cc
}
}
count();
答案 3 :(得分:1)
setTimeout
的另一个递归版本:
(function count(cc) {
document.getElementById("cco").innerHTML = cc;
if (cc > 0)
setTimeout(function() { count(--cc); }, 1000);
})(10);
答案 4 :(得分:0)
进行倒计时时,请确保开始和结束元素正确无误。
数起:
var ctx = Request.GetOwinContext();
var cl2 = ctx.Authentication.User.Claims; // here there is no claims
从 0到
倒计时不正确:
for (var x=0;x < 10;x++) console.log(x);
从 10到
正确倒计时:
for (var x=10;x > 0;x--) console.log(x);
从 9变为0