Javascript x秒后隐藏div

Javascript x秒后隐藏div,javascript,Javascript,我试图在执行一些代码x几次后隐藏某个div。然而,这似乎不起作用 首先,我尝试在for循环中使用setTimeout: var startCap = 1; var cap = 5; for(cap; cap > startCap; cap--){ setTimeout(function(){ startTimeElement.innerHTML = "Starting in " + cap + "."; }, 1000); }

我试图在执行一些代码x几次后隐藏某个div。然而,这似乎不起作用

首先,我尝试在for循环中使用
setTimeout

var startCap = 1;
var cap = 5;
for(cap; cap > startCap; cap--){
    setTimeout(function(){              
        startTimeElement.innerHTML = "Starting in " + cap + ".";
    }, 1000);
}
我原以为上述操作会导致显示该行,等待一秒钟,然后继续执行for循环。结果完全跳过了超时。我试着记录它,然后在几毫秒后显示了四次
1

然后我尝试使用
SetInterval
,但也没有得到想要的结果。这两次都是在进入函数后直接将div的样式设置为
none
,不考虑时间

var startCap = 1;
var cap = 5;
var interval = function(){  
    startTimeElement.innerHTML = "Starting in " + cap + ".";
    cap--
    if(cap < startCap){
        clearInterval(capInterval);
    }
};

var capInterval = setInterval(interval, 1000);

这一行的功能与超时/间隔相同,但在它的正下方。

在第一个代码示例中,您将立即设置四个单独的超时,每个超时花费1秒。这四个项目将大致同时完成

您需要设置一个每秒可以调用一次的函数。在该函数中执行倒计时。只调用它一次,完成后让它再次调用自己,直到计数器达到零。像这样:

var secs = 5;
function runOnceASecond() {
  startTimeElement.innerHTML = "Starting in " + secs + ".";
  secs -= 1;
  if ( secs==0 ) runMyCode();
  else {
    setTimeout(runOnceASecond,1000);
  }
}
runOnceASecond();
然后,函数runMyCode()将在倒计时完成时执行它需要执行的操作——在您的例子中,执行CSS修改


只要在调用clearInterval()时修改CSS,您的第二块代码看起来应该可以工作。

在第一个代码示例中,您立即设置了四个单独的超时,每个超时需要1秒。这四个项目将大致同时完成

您需要设置一个每秒可以调用一次的函数。在该函数中执行倒计时。只调用它一次,完成后让它再次调用自己,直到计数器达到零。像这样:

var secs = 5;
function runOnceASecond() {
  startTimeElement.innerHTML = "Starting in " + secs + ".";
  secs -= 1;
  if ( secs==0 ) runMyCode();
  else {
    setTimeout(runOnceASecond,1000);
  }
}
runOnceASecond();
然后,函数runMyCode()将在倒计时完成时执行它需要执行的操作——在您的例子中,执行CSS修改


只要在调用clearInterval()时修改CSS,您的第二块代码看起来应该可以工作。

在第一个代码示例中,您立即设置了四个单独的超时,每个超时需要1秒。这四个项目将大致同时完成

您需要设置一个每秒可以调用一次的函数。在该函数中执行倒计时。只调用它一次,完成后让它再次调用自己,直到计数器达到零。像这样:

var secs = 5;
function runOnceASecond() {
  startTimeElement.innerHTML = "Starting in " + secs + ".";
  secs -= 1;
  if ( secs==0 ) runMyCode();
  else {
    setTimeout(runOnceASecond,1000);
  }
}
runOnceASecond();
然后,函数runMyCode()将在倒计时完成时执行它需要执行的操作——在您的例子中,执行CSS修改


只要在调用clearInterval()时修改CSS,您的第二块代码看起来应该可以工作。

在第一个代码示例中,您立即设置了四个单独的超时,每个超时需要1秒。这四个项目将大致同时完成

您需要设置一个每秒可以调用一次的函数。在该函数中执行倒计时。只调用它一次,完成后让它再次调用自己,直到计数器达到零。像这样:

var secs = 5;
function runOnceASecond() {
  startTimeElement.innerHTML = "Starting in " + secs + ".";
  secs -= 1;
  if ( secs==0 ) runMyCode();
  else {
    setTimeout(runOnceASecond,1000);
  }
}
runOnceASecond();
然后,函数runMyCode()将在倒计时完成时执行它需要执行的操作——在您的例子中,执行CSS修改


只要在调用clearInterval()时修改CSS,第二块代码看起来应该可以工作。

setTimeout
不会阻止JavaScript执行。这就是为什么它继续执行for循环,将每个函数安排在几乎相同的时间执行

AFAIK没有本机的sleep函数,您也不希望这样,因为它会阻止在页面上执行任何其他JS,直到一切完成

您可以安排在不同的时间运行超时

var cap = 5;
for(var i = 0; i < cap; i++){
    setTimeout((function(){
        var remainingTime = cap - i;

        return function(){              
            startTimeElement.innerHTML = "Starting in " + remainingTime + ".";
        }
    })(), 1000 * (i + 1));
}
var-cap=5;
对于(变量i=0;i
此外,由于闭包,您需要将剩余时间存储在不同的函数中,否则它将捕获i的最终值


setTimeout
不会阻止JavaScript执行。这就是为什么它继续执行for循环,将每个函数安排在几乎相同的时间执行

AFAIK没有本机的sleep函数,您也不希望这样,因为它会阻止在页面上执行任何其他JS,直到一切完成

您可以安排在不同的时间运行超时

var cap = 5;
for(var i = 0; i < cap; i++){
    setTimeout((function(){
        var remainingTime = cap - i;

        return function(){              
            startTimeElement.innerHTML = "Starting in " + remainingTime + ".";
        }
    })(), 1000 * (i + 1));
}
var-cap=5;
对于(变量i=0;i
此外,由于闭包,您需要将剩余时间存储在不同的函数中,否则它将捕获i的最终值


setTimeout
不会阻止JavaScript执行。这就是为什么它继续执行for循环,将每个函数安排在几乎相同的时间执行

AFAIK没有本机的sleep函数,您也不希望这样,因为它会阻止在页面上执行任何其他JS,直到一切完成

您可以安排在不同的时间运行超时

var cap = 5;
for(var i = 0; i < cap; i++){
    setTimeout((function(){
        var remainingTime = cap - i;

        return function(){              
            startTimeElement.innerHTML = "Starting in " + remainingTime + ".";
        }
    })(), 1000 * (i + 1));
}
var-cap=5;
对于(变量i=0;i
此外,由于闭包,您需要将剩余时间存储在不同的函数中,否则它将捕获i的最终值


设置超时
不阻止JavaScrip