0

ねえ、私は持っていますsetTimeOut();

それは何度も自分自身を呼び出します。

clearTimeout()問題は、ユーザーが特定の div を閉じたときにそれをクリアしたいことですが、実行中のタイムアウトの ID を使用して中止する方法がわかりません。

私の関数の例を次に示します。

upgrade(end , new Date().getTime() / 1000 ,text,false);
//happens when you clicks on something

function upgrade(end, start, text, timerId){        

    var per = ( (new Date().getTime() / 1000) - start ) / ( end - start ) * 100;

    if(per>100)per=100;
    if(per<0)per = 0;
    text.innerHTML = Math.round(per)+'%';
timerId = setTimeout(function() { upgrade_bar(end, start, text, timerId) } , 17);
}

ここで、ユーザーがこのタイマーを閉じたいとします。clearTimeout(timerId)IDのスコープが関数に限定されている場合、どうすればよいですか?

私は例えばこれを持っています:

document.getElementById("sbmt").addEventListener("click", remove_div, false);
//this happens during windows.onload

どういうわけか私の機能remove_divはそれをクリアしなければなりません。ただし、タイムアウトの ID にはスコープがありません。

タイムアウトをクリアするためのオプションは何ですか?

4

3 に答える 3