有没有办法在超时时删除javascript中的所有函数?

时间:2013-11-05 14:52:04

标签: javascript html html5 timeout

我创建了一个拖放游戏。是否有可能在时间结束时停止所有mouseEvent?

以下是我的计时器代码。

var canvas = document.getElementById("canvas");
var canvas_context = canvas.getContext("2d");
var text = "you have: 10 : 00 left"

function showFillText() {
canvas_context.clearRect(500, 350, 80, 100);
canvas_context.fillStyle = '#36F'; //text color
canvas_context.font = ' bold 20px sans-serif';
canvas_context.textBaseline = 'bottom'; 
canvas_context.fillText(text, 500, 450); //('text', x, y)
}
var mins = .1;  //Set the number of minutes you need
var secs = mins * 60;
var currentSeconds = 0;
var currentMinutes = 0;
setTimeout('Decrement()',1000);

function Decrement() {
    currentMinutes = Math.floor(secs / 60);
    currentSeconds = secs % 60;
    if(currentSeconds <= 9) currentSeconds = "0" + currentSeconds;
    secs--;
   text = currentMinutes + ":" + currentSeconds; //Set the element id you need the time put into.
    if(secs !== -1) setTimeout('Decrement()',1000);
    //document.getElementById("timerText").innerHTML = currentMinutes + ":" + currentSeconds; 
    if (currentMinutes == 0 && currentSeconds ==0)  {
    text = "TIMES UP"   
    //document.location.href = "http://www.google.com";
    }
    showFillText()
}

3 个答案:

答案 0 :(得分:2)

保留所有事件处理程序的列表,并在计时器到期时将其删除。

所以而不是:

document.getElementById("some element").addEventListener("onX", function () {});
你这样做:

registerEvent(document.getElementById("some element"), "onX", function () {});

registerEvent会保留所有事件侦听器的列表。您可以使用removeEventListener删除事件侦听器。

答案 1 :(得分:0)

可以使用指针事件。将它用于您感兴趣的div或类。http://caniuse.com/pointer-events

答案 2 :(得分:0)

添加一个名为(例如)'lock'的标志,最初设置为0。

时间到了,将其设置为1。

在函数

中添加if
function myFunction(){
    if( lock == 0 ){
        ... function ...
    }
}

可能有更复杂的方法,但这应该有效。 。