У меня есть следующий код:Javascript, добавив переменную дважды
var m = 0;
function addmoney(){
var today = new Date();
var s =today.getSeconds();
if(s == 30){
m += 10;
}
document.getElementById('mon').innerHTML=s+" money: "+m;
t=setTimeout(function(){addmoney()},500);
}
В основном то, что я делаю это, чтобы добавить 10 к значению м через каждые 30 секунд. Проблема здесь в том, что переменная фактически добавляется дважды. Мне было интересно, почему так было?
EDIT: Извините, не хотел делать s ++, так или иначе это не сильно изменилось.
FYI, 'setTimeout (function() {addmoney()}, 500)' проще записать как 'setTimeout (addmoney, 500)' –
, когда и как вы называете 'addmoney()' впервые? –
Вы устанавливаете функцию таймаута для вызова через 0,5 секунды. getSeconds() возвращает только полные секунды. Поэтому, если вы вызываете функцию, например, 12:30:01 100ms, который возвращает 30 секунд, и следующий вызов разрешается достаточно быстро, следующая дата может быть 12:30:01 700 мс, которая также возвращает 30 секунд m, увеличивается в этот момент дважды ... чтобы быть в безопасности, set timeout to 1000ms;) – Igle