2016-05-01 1 views
2

Я не могу заставить этот код делать что-либо помимо подсчета до 29 из 30. Кто-нибудь имеет какие-либо идеи или подсказки относительно того, что я делаю неправильно, чтобы заставить его работать только один раз? Я проверил, чтобы все функции вызывались с console.logs в game.time (кроме clearInterval, поскольку он останавливается уже после первого раза). Как заставить setInterval продолжать цикл до 0? Заранее благодарю за любую помощь! :)setInterval не продолжает

//game object to contain variables and methods 

var game = { 

    // variable for time 

    time: 30, 

    // Start button onclick creates the time remaining object and calls the forloop to start 

    start: function() { 
     // $("#time").html(game.time); 
     game.countdown = setInterval(game.count(), 1000); 

    }, //end of start function 

    //what the set interval does which is subtract one second from game.time 

    count: function() { 

     game.time--; 

     // if statement to check when time gets to zero 

     if (game.time <= 0) { 
      game.stop(); 
     } 

     // puts the current time left on the page 
     else { 
      $("#time").html(game.time); 
     } 

    }, // End of count function 

    // stops the set interval 

    stop: function() { 
     clearInterval(game.countdown); 
    }, // end of stop function 


}; // end game object 

// Start button click calls the start method 

$("#start").click(game.start); 
+0

Привет Роберт, добро пожаловать ТАК! Спасибо за четкий, хорошо отформатированный вопрос с примерами кода :) – Ben

ответ

2

setInterval принимает функцию refererence в качестве параметра, он должен выглядеть следующим образом:

setInterval(game.count, 1000) 

Когда вы пишете, как game.count(), вы вызываете метод count() один раз, что оценивается немедленно.

Затем подпись setInterval «s будет использовать возвращаемое значение из этого метода вместо ссылки на функцию:

setInterval(whatever_the_return_value_was, 1000); 

Передавая только ссылку (как game.count), таймер должен работать, как ожидалось. Он будет вызывать ссылку самостоятельно, каждые 1000 мс.

(MDN docs)

+0

Спасибо за ваш ответ. Это было именно то, что было неправильно! –