Il codice mi sembra poco strutturato e molto farraginoso: non si capisce qual è la logica che vi sta dietro.
Tanto per cominciare, esaminiamolo formattato un pochino meglio:
var sec = 0;
var min = "";
var dec = "";
for (dec = 0; dec <= 60; dec++) {
(function cronometro2(ind) {
setTimeout(function () {
document.getElementById("decimi").innerHTML = ((ind + 1) * 100, ':', ind);
}, 100 * (ind + 1));
})(dec);
while (dec == 10) {
dec = dec * 0;
sec = sec + 1;
document.getElementById("secondi").innerHTML = sec;
}
while (sec == 60) {
sec = 0;
min = min + 1;
document.getElementById("minuti").innerHTML = min;
}
if (min == 1)
break;
}
Non capisco perché fai operazioni aritmetiche con le variabili
min e
dec inizializzandole però con un valore di tipo stringa, precisamente una stringa vuota.
Ancora meno chiaro è l'uso della funzione
cronometro2, che avvia un
setTimeout contenente sia calcoli che visualizzazioni, senza che sia chiaro gli altri cicli
while() cosa abbiano a che fare.
Teoricamente, basterebbe un
setTimeout() unico adatto a scandire il tempo quando si intende avviare il cronometro, e a ogni "tick" del timeout andare a vedere qual è il tempo trascorso (sottraendo la data/ora attuale da quella memorizzata alla partenza), estrapolando le parti di ore/minuti/secondi/decimi o quello che occorre per lo scopo di visualizzazione.
Scritta in questo modo, mi sembra poco manutenibile e poco chiara come logica.