Pagina 1 din 1

Cronometru cu milisecunde

Scris: Lun Mar 12, 2018
de Stefan
Salut, in ultima perioada incerc sa ma imprietenesc cu Javascript (chiar daca el nu prea vrea) si vreau sa inteleg cat mai mult, de aceea postez cam des. Am avut o tentativa de a face un cronometru (cat de simplu) care sa afiseze si milisecundele dar am cateva probleme:
1) Cronometrarea nu mi se pare ca este prea precisa;
2) Imi afiseaza multe zecimale si nu inteleg de ce. Poza: imgur.com/a/bc6o4
3) Timpul nu se opreste fix la 0 (asta este si normal fiindca apar acele zecimale)

Cod: Selectaţi tot

var i=7.8;
var timp  = setInterval(cronometru, 100) ;
function cronometru() {
  if(i <= 0){
    clearInterval(timp);
    return;
  }
  i=i-0.1;
  $('#timp').val(i);
}
Si in pe langa asta, intre secunda si milisecunda cum as putea pune un punct?

Cronometru cu milisecunde

Scris: Mar Mar 13, 2018
de MarPlo
Salut,
Poti posta cat de des ai nevoie, dar daca nu se implica si altii sa ajute, raspunsul meu din ceea ce stiu e in timpul disponibil.

Afisarea nu e precisa din cauza vitezei de procesare care e mai mica de o nanosecunda, care e cu mult intre o miime si 0.
Ca sa faci precizia la milisecunda, se aplica metoda toFixed(3).
Ca sa afiseze oprirea corect la 0, codul de afisare se adauga inainte de "return".
Punctul e deja adaugat automat intre intreg si zecimale (secunda si miimi).
Codul functional:

Cod: Selectaţi tot

<input type='text' id='el_tmp' />
<script>
var i=7.8; //seconds to start from
var intv =.1; //time interval to decrease the i
var timp  = setInterval(cronometru, 1000*intv);
let el_tmp = document.querySelector('#el_tmp');
function cronometru(){
  i-= intv;
  i = i.toFixed(3);  //set precision to milliseconds (to 3 decimals)
  if(i >=0) el_tmp.value = i;  
  else return clearInterval(timp);
}
</script>

Cronometru cu milisecunde

Scris: Mar Mar 13, 2018
de Stefan
Nu functioneaza corect, se exectuta mult prea rapid si nu cred ca dureaza mai mult de o secunda pana ajunge la 0, de ce?

Cronometru cu milisecunde

Scris: Mar Mar 13, 2018
de MarPlo
Functia setInterval() se execuuta prea repede, nu tinusem seama de valoare miimilor de secunda la apelarea ei.
Am corectat, in loc de:

Cod: Selectaţi tot

var timp  = setInterval(cronometru, intv);
Corect e:

Cod: Selectaţi tot

var timp  = setInterval(cronometru, 1000*intv);