0

関数の先頭で変数を宣言し、this.current_test = null;その後、setInterval関数を使用して、変数を新しいパラメーターに設定する必要があります。

this.current_test.failed = true;

コード:

timer = this.window.setInterval(function() 
   {
      this.window.clearInterval(timer);
      this.current_test.failed = true;
   },1000);
 }

ただし、TypeError: 'undefined' is not an object (evaluating 'this.current_test.failed = true'エラーが発生します

これは、this.current_testがsetInterval関数内で定義されていないためだと思いますが、その変数を編集するにはどうすればよいですか?

4

1 に答える 1

0

タイマー関数の「this」のスコープは、this.window を参照しません。このスコープは、機能に対してのみできることです

var wnd=this.window; // take your widow to local variable
timer = this.window.setInterval(function() 
{
   this.window.clearInterval(timer);
   wnd.current_test.failed = true; // use your local variabe in the function
   },1000);
}

ところで、window を参照するために、なぜ「this」が必要なのですか? また、cuurent_test がグローバル変数である場合は、次のように宣言できます。

var current_test;

タイマー関数内でグローバル変数を使用できます

于 2012-06-26T03:46:20.560 に答える