Autor Zpráva
perwin
Profil
Ahoj,
potřeboval bych radu. Potřebuji vyrobit nějakou funkci v JS:
1) Kliknu na element (button, input,..) -> spustí se odpočet (např. 5 minut)
2) Doběhne odpočet -> zapne se další funkce (to je už jedno jaká, to si pak nastavím sám)
Jde hlavně o to, aby - tam bylo vidět to odpočítávání v real čase
- měl uživatel možnost to odpočítávání zrušit
Sice mi už přijde blbý se na vás stále obracet s těmito otázkami, ale prohledával jsem Google a našel jsem sice hodně odpočtů a podobných funkcí, ale bohužel se mi nepovedlo je přizpůsobit podle sebe.
Prosím poraďte.
Děkuji
TomasJ
Profil
<html>
<head>
<script>
var Cas; //Proměnná pro čas
var timer; //Proměnná pro interval
function StartOdpocet(time)
{
  if(time){Cas = time;}else{Cas=60;} //Nastaví se, kolik se má odpočítávat, pokud se nezadá parametr time, nastaví se 60
  if(!timer){timer = setInterval(Odpocet,1000);} //Nastaví se interval na 1 sekundu a do proměnné timer se uloží jeho "ID"
}

function Odpocet()
{
  if(Cas>0){Cas--;document.getElementById('countdown').innerHTML=Cas;} //Vypíšeme proměnnou Cas do elementu s ID="countdown"
  else{clearInterval(timer);/* DalsiFunkce(); */} //Zrušíme interval
}

function KonecOdpocet(){if(timer)clearInterval(timer);timer=false;} //Funkce zruší interval (zastaví se odpočet)
</script>
</head>
<body>
<button onclick="StartOdpocet(120);">Start odpočtu</button> <!-- Po kliknutí se nastaví odpočet na 120 sekund -->
<div id="countdown"></div> <!-- Tady se bude zobrazovat aktuální čas (odpočtu) -->
</body>
</html>
perwin
Profil
TomasJ:
No díky moc :-) takhle rovnou jsem to teda nečekal :-)

EDIT:
Jak je na řádku 15
  else {clearInterval(timer); /* DalsiFunkce(); */} l
tak když tam dám např. alert('AHOJ'); tak to nefunguje. jakto? Díky za odpovědi
TomasJ
Profil
perwin:
[...] else{clearInterval(timer); alert('ahoj');} //Zrušíme interval

Musíš odstranit /* a */, to co je uvnitř, je komentář.
EDIT: Pak si samozřejmě přidáš tlačítko ke zrušení:
<button onclick="KonecOdpocet();">Konec odpočtu</button>


EDIT2: Do funkce KonecOdpocet() jsem na konec zapomněl dát timer=false;, aby se dal odpočet spustit zase.
perwin
Profil
TomasJ:
No tak zle na tom zase nejsem, :D
else{clearInterval(timer); alert('ahoj');}
Takhle to vypada i u mě, já vím, co to je komentář, ale jde o to, že to nefunguje v této podobě.
Tlačítko na konec odpočtu jsem si tam už přidal, a toho že to nelze zapnout znovu jsem si ani nevšiml :D
Díky
TomasJ
Profil
perwin:
Mně to právě normálně funguje... Hoď sem kód.
perwin
Profil
TomasJ:
No už mi to funguje...
Ale potřeboval bych ještě něco. Jak lze převést ta proměnná Cas na čas ve formátu: h:mm:ss? Protože když se mi odpočítává např. číslo 65, tak to je: 65, 64, 63, 62, 61, 60, 59... A bych to chtěl jako: 0:01:05, 0:01:04, 0:01:03, 0:01:02, 0:01:01, 0:01:00, 0:00:59,....
Prosím poraďte.
Děkuji
mark92
Profil
Toto som zlúskal už dávnejšie. Pri čase kratšom, ako 1 deň sa dni nezobrazujú.
<span id="c"></span>
<script>
var cas=31536000;   //počet sekúnd odpočtu
var znaky = "d,h,m,s".split(",");
odpocet();o=setInterval("odpocet()",1000);
function odpocet(){
  c = cas;
  if (c<0){clearInterval(o);koniec();return;}
  var z="";
  var d=Math.floor(c/86400);
  var h=Math.floor(c%86400/3600);
  var m=Math.floor(c%86400%3600/60);
  var s=Math.floor(c%86400%3600%60);
  if(m<10){m="0"+m}
  if(s<10){s="0"+s}
  if(d>0){z+=d+" "+znaky[0]+" ";}
  z+=h+" "+znaky[1]+" "+m+" "+znaky[2]+" "+s+" "+znaky[3];
  document.getElementById("c").innerHTML=z;
  c--;
  cas=c;}
function koniec()
  {
  alert("koniec_odpoctu");
  }
</script>
perwin
Profil
mark92:
Díky moc :-)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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