Autor Zpráva
dresden
Profil *
Zdravím vás!

chci se zkušených programátorů v jazce js zeptat jak mám udělat aby se stránka našetla po určitém čase s viditelným odpočtem. Děkuji

Tohle je funkční příklad:

<script type="text/javascript">
function ajaxFunction(){
 var xmlHttp;
 try{xmlHttp=new XMLHttpRequest();}
 catch (e){
    try{
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
    catch (e){try{
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e){
      alert("Váš prohlížeč nepodporuje AJAX");
      return false;
    }
  }
}
xmlHttp.onreadystatechange=function(){
  if(xmlHttp.readyState==4){
    var x=document.getElementById("date");
    x.innerHTML = xmlHttp.responseText;
  }
}
xmlHttp.open("GET","......",true);xmlHttp.send(null);
}

var poc = document.getElementById('odpocti'); // Tímhle jsem se snažil toho docílit, ale nefunguje to :-(
var cekej = 10;
var timer = window.setInterval( function() {
  poc.innerHTML = cekej;
  if (cakaj==0)
  { // začíná podmínka pokusu
  
    function Timer(){window.setInterval("ajaxFunction()", 1000);} // Vyvolání stránky
    
  }
  cekej--;
}, 1000);// Tady pokus končí
</script>
_es
Profil
dresden:
setTimeout
http://diskuse.jakpsatweb.cz/?action=vthread&forum=8&topic=106539#eval
dresden
Profil *
DĚKUJU ZA ODKAZY, ALE NIC MI TO JAKO ÚPLNÝMU ZAČÁTEČNÍKU JS NEŘEKLO. Můžete mi slovy prosím napsat kde dělám chybu?
_es
Profil
dresden:
DĚKUJU ZA ODKAZY, ALE NIC MI TO JAKO ÚPLNÝMU ZAČÁTEČNÍKU JS NEŘEKLO.
Na prečítanie si, čo ktorá metóda robí, netreba byť veľkým znalcom JS.
Namiesto zmätenej chaotickej úpravy je lepšie si najprv premyslieť, ako celý kód pracuje.

Můžete mi slovy prosím napsat kde dělám chybu?
Rozoberať skript a špekulovať, čo to asi má robiť a nerobí sa mi nechce.
No ak si pozrieš, čo robí metóda setInterval, napríklad kliknutím na odkaz v kóde, tak prídeš na to, že také dvojité použitie musí byť nezmyselné.
Teda chyba nie je v neznalosti nejakých pokročilých techník, ale v zlom logickom návrhu skriptu.
dresden
Profil *
Tak tedy stačí pozměnit tohle?
function Timer(){window.setInterval("ajaxFunction()", 1000);} // Vyvolání stránky
jak mám ale nahradit setinterval?
_es
Profil
dresden:
Pozri si, ako funguje setInterval a ako setTimeout a zostav si podľa toho správne svoj skript, aby pracoval tak, ako chceš. Je veľa možností ako úlohu správne vyriešiť. Malo by ti záležať na tom, aby si to sám pochopil a nie len slepo upravil kód podľa cudzích pokynov.
dresden
Profil *
Tomu rozumím, jsem si myslel, že mi někdo tady poradí. Pochopte, že se žádnou znalostí js můžu sice pochopit a myslím si dokonce, že i chápu běh, ale nedokážu to napsat jak to má bejt.
_es
Profil
dresden:
Čo potrebuješ ešte viac pochopiť?
Metóda setTimeout spustí za daný čas danú funkciu.
Metóda setInterval spustí za daný čas danú funkciu a potom stále opakovane v danom čase - časovom intervale.
Ako pracuje objekt XMLHttpRequest a kedy je spustená jeho udalosť onreadystatechange asi tiež vieš - máš všetko potrebné.
Tak sa nad tým teda zamysli, nepodceňuj sa, a napíš si ten skript.
A prečítaj si aj ten druhý odkaz v [#2].
dresden
Profil *
Myslím si, že si mě až moc zase přecenil :-(

Našel jsem si jiný script, který by měl bejt kompatibilní, ale taky se mu tam něco nelíbí.

<script type="text/javascript">
function ajaxFunction(){
 var xmlHttp;
 try{xmlHttp=new XMLHttpRequest();}
 catch (e){
    try{
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
    catch (e){try{
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e){
      alert("Váš prohlížeč nepodporuje AJAX");
      return false;
    }
  }
}
xmlHttp.onreadystatechange=function(){
  if(xmlHttp.readyState==4){
    var x=document.getElementById("date");
    x.innerHTML = xmlHttp.responseText;
  }
}
xmlHttp.open("GET",".......",true);xmlHttp.send(null);
}





  var i = 5;
  odpocet();
  function odpocet() {
  if(i > 0) {
  var text;
  if((i < 5) && (i > 1)) {
  text = 'sekundy';
  }
  else if(i == 1)
  {
  text = 'sekunda';
  }
  else
  {
  text = 'sekund';
  }
  setTimeout("odpocet()", 1000);
  document.getElementById("cislo").innerHTML ='Zbývá času: ' + i + ' ' + text;
  i--;
  } 
  else {



    function Timer(){window.setInterval("ajaxFunction()", 1000);}



}
}
</script> 
_es
Profil
dresden:
Ten odkaz v [#2] si si asi vôbec neprečítal.
Skús nájsť nejaký skript, ktorý bude v súlade s radou v tom odkaze.
Ak chceš kompletné riešenie a nemáš dosť úsilia, aby si si to spravil sám, mal by si aspoň dostatočne detailne a zrozumiteľne popísať, čo má ten tvoj skript robiť.
jak mám udělat aby se stránka (čo je v tomto prípade „stránka“?) našetla po určitém čase s viditelným odpočtem (čo to má byť, má to byť nejaké číselné odratúvanie po sekundách? po minutách a sekundách alebo niečo úplne iné? „Odpočet“ koľko času ubehlo, alebo koľko času zostáva do nejakej udalosti alebo nejaký iný „odpočet“?).
dresden
Profil *
dobrý, jsem to už vyřešil :-) Děkuju

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:

0