SetInterval() ClearInterval() i cuda na stronie internetowej

0

Dzień dobry mam dziwaczny problem z skryptem javascript na mojej stronie

<body>
<div id="odliczanie">
<script type="text/javascript">
var zegar; var h=0; var m=0; var s=0;

function sterowanie(x){

function klepsydra(){ if(m==60){h=h+1; m=0; s=0;} else if(s==60){m=m+1; s=0;} else{s=s+1;} 
document.getElementById("odliczanie").innerHTML = h+":"+m+":"+s;};

if(x==1){zegar = setInterval(klepsydra,1000);}
if(x==0){clearInterval(a);}
};

</script>
<button onclick="sterowanie('1')">Start</button>
<button onclick="sterowanie('0')">Stop</button>
</div>

<div id="data">
<script type="text/javascript">
function czas(){var d = new Date(); 
document.getElementById("data").innerHTML = d.getHours()+":"+d.getMinutes()+":"+d.getSeconds()+" "+d.getFullYear()+"/"+d.getMonth()+"/"+d.getUTCDate();
setInterval(czas,1000); }
czas();
</script>
</div> 

</body>

Niby wszystko powinno działać tak jak trzeba, ale w praktyce to wygląda tak że skrypt umieszczony w divie data działa normalnie, a skrypt w divie odliczanie przejawia jakąś aktywność paranormalną gdyż przez pierwsze 12-14 sekund odlicza normalnie a później albo staje albo jego odliczanie tak spowalnia że gdy divie data mija no 8 sekund to w divie odliczanie tylko jedna. Co może być przyczyną?

0
function czas() {
...
setInterval(czas,1000); 
}

czas();

Uruchamiasz funkcję czas, która następnie w interwale, co sekundę uruchamia funkcję czas, która uruchamia kolejne funkcje czas :) Czyli co sekundę podwaja ci się liczba interwałów. Zmień setInterval na setTimeout

0

A gdybym przeniósł po prostu setInterval poza obszar funkcji czas?

0

Działa wystarczyło przenieść interwał w innej miejsce.
Dziękuje za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1