Autor Zpráva
Fisak
Profil
Dobrý den,

mám problém se JS scriptem který mi má počítat aktuální uplynulý čas od určitého data. Bohužel v jiných prohlížečích mi to píše NaN:NaN. Nevíte čím by to mohlo být? Předem děkuji za Vaše odpovědi.

echo "</span></div><div class=\"time\"><span id=\"timegame\"></span></div></div>";
echo "<script type=\"text/javascript\">

var elapsedTime = (function(){
  var sec_hours = (1000*60*60);
  var inv_sec_hours = 1/sec_hours;

  var sec_minutes = (1000*60);
  var inv_sec_minutes = 1/sec_minutes;

  var floor = Math.floor;

  function elapsedTime(date){ 
    var time = date.getTime(), actual_time = (new Date()).getTime(); 

    var diff = actual_time - time;

    var hours = floor(diff * inv_sec_hours);
      diff -= hours*sec_hours;
    var minutes = floor(diff*inv_sec_minutes);
      diff -= minutes*sec_minutes;
    var seconds = floor(diff*0.001);
      diff -= seconds * 1000; 

    if (hours < 10) {hours = \"0\"+hours.toString();} 
    if (minutes < 10) {minutes = \"0\"+minutes.toString();} 
    if (seconds < 10) {seconds = \"0\"+seconds.toString();} 

    return {
      hours:hours,
      minutes:minutes,
      seconds:seconds
    };
  };
  return elapsedTime; 
})();


function countdown(el,time){
  var out = elapsedTime(time);
  var time_minutes = (out.hours*60) + out.minutes;
  el.innerHTML = time_minutes+':'+out.seconds;
  setTimeout(function(){
    countdown(el,time);
  },1000);
};

countdown(
  document.getElementById('timegame'),
  new Date('".$row_game_score->time."')
);


</script>";



A ještě pokud je čas měnší než 60 minut tak se ukazují minuty s třemi ciframy.. tzn. 000:50 .. nevíte jak toto napravit? Předem děkuji za rady..
Chamurappi
Profil
Reaguji na Fisaka:
Proč sem vkládáš PHP kód? Copak nevíš, že PHP se vykonává na straně serveru a o funkčnosti a nefunkčnosti JS rozhoduje jen kód, který se zpracovává v prohlížeči?

Bohužel v jiných prohlížečích mi to píše NaN:NaN.
Nejspíš neplatným datumem. Dáváš do toho řetězce v new Date něco, co nevypadá jako datum.

tak se ukazují minuty s třemi ciframy.. tzn. 000:50 .. nevíte jak toto napravit?
Nevypisuj v takovém případě hodiny.

Ta odpočítávací funkce je dost praštěná, vrací objekt, ve kterém jsou v závislosti na počtu cifer hodin/minut/sekund buď čísla, nebo řetězce.
1Pupik1989
Profil
Jo, to jsem upravil svoji funkci. Ta vrací datum Včetně roků a měsíců. Ty hrubky tam jsou naschvál, aby kód nelepil, ale přemýšlel nad ním. O tom datum v parametru jsem mu taky psal a dokonce i o JavaScriptu v Php, že je fuj.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: