Calcolo Tempo al Km e Velocità Media

Calcolo del tempo al Km e della velocità media in puro Javascript. Per corridori, ciclisti e nuotatori. For runners, bikers and swimmers.

by Michele Pisani

HTML

<b class="header">Inserisci la distanza (enter the distance)</b><br />
Meteri (meters): <input type="text" id="meters" value="0"><br /><span id="alert_meters"></span><br /><br />

<b class="header">Inserisci il tempo trascorso (enter the time spent)</b><br />
hh: <input type="text" id="hh" value="0"><br />
mm: <input type="text" id="mm" value="0"><br />
ss: <input type="text" id="ss" value="0"><br /><span id="alert_time"></span><br /><br />

<input type="button" value="Calcola/Calculate" onclick="calculate();" /><br /><br />

<b>Tempo al Km (Time Km):</b> <span id="timekm"></span><br />
<b>Velocità media (Average speed):</b> <span id="avgspeed"></span>

CSS

.header { font-size:20px; }
#alert_meters,#alert_time { color:#AA0000; }

JavaScript

function calculate() {
  var seconds=0;
  var meters=0;
  var time_ms=0;
  var speed=0;
  var speed_km=0;
  var bln_calculate=true;
  document.getElementById('alert_meters').innerHTML = '';
  document.getElementById('alert_time').innerHTML = '';

  meters = Number(document.all['meters'].value);
  hh = Number(document.all['hh'].value) * 60 * 60;
  mm = Number(document.all['mm'].value) * 60;
  ss = Number(document.all['ss'].value);

  if  (meters <= 0 || isNaN(meters)) {
  	document.getElementById('alert_meters').innerHTML = "Inserisci la distanza percorsa/Enter the distance";
    document.all['timekm'].innerHTML = '';
    document.all['avgspeed'].innerHTML = '';
    bln_calculate=false;
  }
  
  if ((hh==0 && mm==0  && ss==0) || isNaN(hh) || isNaN(mm) || isNaN(ss)) {
  	document.getElementById('alert_time').innerHTML = "Inserisci il tempo di percorrenza/Enter the time";
    document.all['timekm'].innerHTML = '';
    document.all['avgspeed'].innerHTML = '';    
    bln_calculate=false;
  } 

  if (bln_calculate) {
    seconds = hh + mm + ss;
    speed_km = meters * 3600 / seconds;
    time_ms = meters / seconds;
    time_ms  = 1000 / time_ms;
    seconds_calc  = Math.floor(((time_ms/60) - Math.floor(time_ms / 60))*60);
    time_ms = Math.floor(time_ms / 60);
    if (seconds_calc == 60) {
      seconds_calc == 0;
      time_ms == time_ms + 1;
    }
    document.all['timekm'].innerHTML = time_ms + ',' + seconds_calc;
    document.all['avgspeed'].innerHTML = Math.floor(speed_km) / 1000;
  }
}