いくつかの指針:
1) dom 要素にアクセスしようとしているので、要素が DOM に存在するかどうかを確認することをお勧めします。
すでに jQuery を使用しているため、このすべてのコードを 内に置くことをお勧めします
$(document).ready()
。
2)この場合clearTimeout
の参照をメモリから削除するt
と、後でそれを参照すると、予測できない結果が生じます。この変数は、ある時点で要素からt
をクリアしたい場合に実際に使用されます。timeout
3) 値を文字列形式で渡すことは、timedCount()
JS がその値を取得するために eval を適用する必要があることを意味します。この場合は関数を参照します。http://www.jslint.org。JS 標準では、eval の使用を避けるよう求めています。ここでは無名関数を使用することをお勧めします。これにより、目的の関数が呼び出されますtimedCount()
。
4)別の実装に関する限り、stopCount()
関数をいつどのように呼び出すかによって異なります。あなたの実装では、1 秒後に同じ関数を呼び出し続けるため、実際には呼び出されません。
目的のコードは次のようなものです
function timedCount()
{
// the first 2 lines doing something
t = setTimeout(function()
{
// if clear time out logic
if ( can_clear_timeout() )
{
stopCount();
}
else
{
return timedCount();
}
}, 1000);
}
5) もう 1 つの警告はtimer_is_on
、標準に反するようなグローバル変数を使用しないことです。