基本Javascript倒计时

基本Javascript倒计时,javascript,intervals,countdown,Javascript,Intervals,Countdown,大家好。请考虑一个看起来很简单的问题:我有一个基本的倒计时,目的是倒数到5,并不断循环 var countDownDiv = document.getElementById('countDown'); window.setInterval(intervalCountDown, 1000); function intervalCountDown() { var counter = 5; countDownDiv.innerHTML = counter--; } 问题是它没有倒计时,原因我

大家好。请考虑一个看起来很简单的问题:我有一个基本的倒计时,目的是倒数到5,并不断循环

var countDownDiv = document.getElementById('countDown');
window.setInterval(intervalCountDown, 1000);
function intervalCountDown() {
  var counter = 5;
  countDownDiv.innerHTML = counter--;
}

问题是它没有倒计时,原因我不知道。这是我创建的一个计数器,如果有帮助的话。

每次调用倒计时时,您都会重新定义计数器。
为了防止这种情况,您应该在外部范围中定义变量

var countDownDiv=document.getElementById('countDown');
设置间隔(间隔倒计时,1000);
var计数器=5;
函数intervalCountDown(){
countDownDiv.innerHTML=计数器--;
}

只需将var计数器置于函数intervalCountDown()之外即可


在函数外部初始化计数器

var countDownDiv = document.getElementById('countDown');
window.setInterval(intervalCountDown, 1000);
var counter = 5;
function intervalCountDown() {

  countDownDiv.innerHTML = counter--;
}

每个刻度创建一个新的
计数器
变量。将计数器移出勾号功能:

var countDownDiv=document.getElementById('countDown');
var计数器=5;
设置间隔(间隔倒计时,1000);
函数intervalCountDown(){
countDownDiv.innerHTML=计数器--;
}

您每次都在重新说明计数器变量。修正:

var countDownDiv=document.getElementById('countDown');
var计数器=5;
var countInterval=setInterval(intervalCountDown,1000);
函数intervalCountDown(){

如果(counter您使用值5重新定义计数器变量。 您可以使用闭包,如下所示

var countDownDiv = document.getElementById('countDown');
window.setInterval(intervalCountDown(), 1000);
function intervalCountDown() {
  var counter = 5;
  return function(){
    countDownDiv.innerHTML = counter--;
    if(counter==0) // Re-initiate counter
      counter = 5;
  }
}

您的变量计数器在本地声明,因此一次又一次地分配相同的值计数器=5。这就是下面的问题显示我的更正

var bingoDiv = document.getElementById('bingo');
window.setInterval(intervalBingo, 5000);

function intervalBingo() {
  var newNum = Math.floor(Math.random() * 75) + 1;
  bingoDiv.innerHTML = newNum;
}
// basic countdown
var countDownDiv = document.getElementById('countDown');
window.setInterval(intervalCountDown, 1000);
var counter = 5;
function intervalCountDown() {

    if (counter == 0) {
     counter =5;
   }
  countDownDiv.innerHTML = counter--;
}
//数字随机化器
var bingoDiv=document.getElementById('bingo');
var计数器=5;
var计数器间隔=假;
设置间隔(间隔,5000);
函数间隔bingo(){
var newNum=Math.floor(Math.random()*75)+1;
计数器=5;
bingoDiv.innerHTML=newNum;
清除间隔(计数器间隔);
countDownDiv.innerHTML=计数器--;
计数器间隔=窗口设置间隔(间隔倒计时,1000);
}
//基本倒计时
var countDownDiv=document.getElementById('countDown');
函数intervalCountDown(){
countDownDiv.innerHTML=计数器--;
}


试试这个

var num = document.getElementById("countDown");//Get value from div.
var counter = 5; //Declaring counter value.
num.innerHTML = counter;//assigning counter value to num variable
function deg(){
counter--;//decrementing counter value.
num.innerHTML = counter;//getting output in div using innerHTML
if(counter <= 0){ //if couter value reaches or goes below 0 then stop     
// decrementing of counter value. 
window.clearInterval(st);
}
}
var st = window.setInterval(deg,1000);
var num=document.getElementById(“倒计时”);//从div获取值。
var counter=5;//声明计数器值。
num.innerHTML=counter;//将计数器值分配给num变量
函数deg(){
计数器--;//递减计数器值。
num.innerHTML=counter;//使用innerHTML获取div中的输出

如果(计数器)每次调用
countDown
时,您都会重新定义计数器。是的,您总是在函数外部重置计数器初始化计数器。这个答案是我上面评论的演示。我将添加详细信息w,很棒的代码!感谢您的回答。使用
setInterval(函数,6000)
以重复功能并完美工作。
var bingoDiv = document.getElementById('bingo');
window.setInterval(intervalBingo, 5000);

function intervalBingo() {
  var newNum = Math.floor(Math.random() * 75) + 1;
  bingoDiv.innerHTML = newNum;
}
// basic countdown
var countDownDiv = document.getElementById('countDown');
window.setInterval(intervalCountDown, 1000);
var counter = 5;
function intervalCountDown() {

    if (counter == 0) {
     counter =5;
   }
  countDownDiv.innerHTML = counter--;
}
var num = document.getElementById("countDown");//Get value from div.
var counter = 5; //Declaring counter value.
num.innerHTML = counter;//assigning counter value to num variable
function deg(){
counter--;//decrementing counter value.
num.innerHTML = counter;//getting output in div using innerHTML
if(counter <= 0){ //if couter value reaches or goes below 0 then stop     
// decrementing of counter value. 
window.clearInterval(st);
}
}
var st = window.setInterval(deg,1000);