Javascript 我怎样做一个间隔计时器?

Javascript 我怎样做一个间隔计时器?,javascript,css,twitter-bootstrap,Javascript,Css,Twitter Bootstrap,我有引导加载栏: <div class="progress"> <div class="progress-bar progress-bar-success progress-bar-striped active" id="loading" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100" style="width: 0%"> </div> &l

我有引导加载栏:

  <div class="progress">
  <div class="progress-bar progress-bar-success progress-bar-striped active" id="loading" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100" style="width: 0%">
  </div>
  </div>

您在函数块中声明
var percentl
,因此
percentl
仅在内部函数的范围内声明,每次调用函数时,
percentl
的值未定义,并在设置为NaN后(如RobG在注释中所述)。试试这个:

var percentl = 0;
setInterval(function () {
  percentl = percentl + 5;
  document.getElementById("loading").style.width = percentl + "%";
}, 1000);

您在函数块中声明
var percentl
,因此
percentl
仅在内部函数的范围内声明,每次调用函数时,
percentl
的值未定义,并在设置为NaN后(如RobG在注释中所述)。试试这个:

var percentl = 0;
setInterval(function () {
  percentl = percentl + 5;
  document.getElementById("loading").style.width = percentl + "%";
}, 1000);
1) percentl在您的函数中有一个局部范围。每次调用它时,都将其重新定义为相同的值

将percentl设置为全局作用域,匿名函数每次调用时都可以访问该作用域

2) 您也只调用了一次setInterval。你应该循环调用它,直到达到100%。比如:

var percentl = 0;


function increase(){

setInterval(function () {
      percentl = percentl + 5;
      document.getElementById("loading").style.width = percentl + "%";
      if(percentl < 100){
        increase();
      }
  }, 1000);
}
var percentl=0;
功能增加(){
setInterval(函数(){
百分比L=百分比L+5;
document.getElementById(“加载”).style.width=percentl+“%”;
如果(百分比L<100){
增加();
}
}, 1000);
}
1)percentl在您的函数中有一个局部范围。每次调用它时,都将其重新定义为相同的值

将percentl设置为全局作用域,匿名函数每次调用时都可以访问该作用域

2) 您也只调用了一次setInterval。你应该循环调用它,直到达到100%。比如:

var percentl = 0;


function increase(){

setInterval(function () {
      percentl = percentl + 5;
      document.getElementById("loading").style.width = percentl + "%";
      if(percentl < 100){
        increase();
      }
  }, 1000);
}
var percentl=0;
功能增加(){
setInterval(函数(){
百分比L=百分比L+5;
document.getElementById(“加载”).style.width=percentl+“%”;
如果(百分比L<100){
增加();
}
}, 1000);
}

您没有更新percentl的值,因此该值始终为0。哎呀,编辑后跳过了该值。修正了,谢谢(顺便说一句,这很快又脏,但应该让他走了)你没有更新percentl的值,所以该值总是0。哎呀,编辑后跳过了。修复了,谢谢(顺便说一句,这很快又脏,但应该可以让他继续)
(var i=0;i这将很快设置100个函数在1秒后被调用,因此它们都将在大约相同的时间运行,并且都对i有一个闭包,因此它们都将得到100%的值(i的最后一个值)。
(var i=0;i这将很快设置100个函数在1秒后被调用,因此它们都将在大约相同的时间运行,并且都对i有一个闭包,因此它们都将得到100%的值(i的最后一个值)。