-1

こんにちは、複数の進行状況バーを表示しようとしています。以下はコードスニップネットです

function Progressbar(id){
   this.id=id;
   this.width=0;
   this.progressInterval=0;
   this.showProgress=function(){
     this.width+=20;
     console.log(this.width);
     console.log(this.id);
     document.getElementById(this.id).style.width=this.width + 'px';
     document.getElementById(this.id).innerHTML=this.width + '%';
     if(this.width==100){
       clearTimeout(this.progressInterval);
     }else{
       this.progressInterval=setTimeout(this.showProgress,1000);
     }
   }
}

ここで id は進行状況バーの ID です。関数 showProgress が同時にまたは異なる時間に複数回呼び出されるため、私は oop を使用しました。ここでの問題は、関数が呼び出されたときに初めて this.width の値を 20 および this.id ="someID" として取得することですが、後で null として取得することです。どこか間違っている場合は修正してください。

4

1 に答える 1

0
 function Progressbar(id){
  var that=this;
  this.id=id;
  this.width=0;
  this.progressInterval=0;
  this.showProgress=function(){
     that.width+=20;
     document.getElementById(that.id).style.width=that.width + 'px';
     document.getElementById(that.id).innerHTML=that.width + '%';
     if(that.width==100){
        clearTimeout(that.progressInterval);
     }else{
     that.progressInterval=setTimeout(that.showProgress,1000);
   }
 }

}

thisの参照を変数に保存するとうまくいきました

于 2013-10-29T16:16:59.853 に答える