添加时间到Javascript游戏计时器如果条件遇到

时间:2014-11-04 18:27:09

标签: javascript jquery if-statement javascript-events

修改

我以为我会尝试添加一些清晰度。基本上我想要的是与杆位相似:越过终点线并获得更多时间。除非在这种情况下你匹配两个数字。


我想要更好地使用Javascript和jQuery,所以我认为创建游戏将是一个很好的方式。

游戏的要点是给你一个数字,目标是匹配那个数字。我有一切工作,包括当目标匹配时,它会增加分数。我现在想要的是在目标匹配时再添加30秒。

我得到它为innerHTML添加30秒但不倒计时。因此,如果你在15岁时它会闪45然后再回到14。

我找到了答案here,并认为我可以更改

if (seconds == 0) {
        isRunning = true;
        seconds += 2;

根据我的情况将其更改为秒+ = 30;但没有任何反应。

这是我的代码。如果您愿意分享,我也对Jquery解决方案持开放态度。

var isWaiting = false;
var isRunning = false;
var seconds = 120;
var countdownTimer;
var finalCountdown = false;
var goalDiv = document.getElementById("goal").innerHTML;
var totalDiv = document.getElementById("total").innerHTML;

function GameTimer() {
    var minutes = Math.round((seconds - 30) / 60);
    var remainingSeconds = seconds % 120;

    document.getElementById('timerID').innerHTML = remainingSeconds;
    if (goalDiv == totalDiv) {
        isRunning = true;
        seconds += 30;

        if (seconds == 0) {
        $.mobile.changePage("index.html#youlost",{transition: "slideup"});
            clearInterval(countdownTimer); 
        } else {
            finalCountdown = true; 
        }

    } else {
        isWaiting = true;
        seconds--;
    }
}
countdownTimer = setInterval(GameTimer, 1000);

2 个答案:

答案 0 :(得分:0)

您最初设置后似乎永远不会更新totalDiv的值。

var goalDiv = document.getElementById("goal").innerHTML;
var totalDiv = document.getElementById("total").innerHTML;

然后,您的GameTimer()函数会一遍又一遍地检查totalDiv的旧值。所以它永远不会增加秒计数器。

您可能希望更改代码,以便在计时器的每个刻度上重新检查totalDiv的值:

function GameTimer() {
    var minutes = Math.round((seconds - 30) / 60);   // also this does not make 
    var remainingSeconds = seconds % 120;            //    much sense..

    var totalDiv = document.getElementById("total").innerHTML;

    document.getElementById('timerID').innerHTML = remainingSeconds;
    var totalDiv = document.getElementById("total").innerHTML;

    //...

这是显示工作版本的a JSFiddle(基于您的示例代码,根据我对您要做的事情的理解进行修改)

另一件事。这也不对..

 seconds += 30;
 if (seconds == 0) {         // this won't be 0 unless seconds was -30 before..
    $.mobile.changePage("index.html#youlost",{transition: "slideup"});
        clearInterval(countdownTimer); 
 }

答案 1 :(得分:0)

我明白了。
首先,我写了自己的时间。

var count = 120;
    function timer() {
            count--;
    $("#timerID").html(+count);
    }

然后.... 我把所有东西都装在$(文件).ready函数中。

  1. 我把setInterval放在一个全局变量中。

  2. 我的clearInterval拉取变量并且在我的函数内部,并检查我的条件得分。

  3. 然后我加30秒并召回计时器。

  4. 也许不是最好的策略,但它有效。