Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Pierwszy czas inny w setInterval
Forum PHP.pl > Forum > Przedszkole
Mike122
Napisałem następujący skrypt który podaję niżej działa prawie tak jak ma działać. Mam jeden problem chodzi o to że za 1 razem (1 raz po wczytaniu, odświeżeniu witryny) ma odliczyć czas 2000 ms (2 sekundy) a później już ma cały czas odliczać czas 5000 (5 sek.) a nie 2.
Proszę o pomoc.

  1. <script type="text/javascript">
  2. function numberFormat(nStr){
  3. nStr += '';
  4. x = nStr.split('.');
  5. x1 = x[0];
  6. x2 = x.length > 1 ? '.' + x[1] : '';
  7. var rgx = /(\d+)(\d{3})/;
  8. while (rgx.test(x1))
  9. x1 = x1.replace(rgx, '$1' + '.' + '$2');
  10. return x1 + x2;
  11. }
  12.  
  13. function getUp(a,b){
  14. a = document.getElementById(a);
  15. a.innerHTML = a.innerHTML;
  16. a.innerHTML = a.innerHTML.replace(new RegExp("[\.]+","g"),"");
  17. a.innerHTML = a.innerHTML.replace(new RegExp("[^\\d.]+","g"),"");
  18. a.innerHTML = a.innerHTML.replace(new RegExp(",","g"),".");
  19. a.innerHTML=+(a.innerHTML || 0)+b;
  20. a.innerHTML = numberFormat(a.innerHTML);
  21. }
  22. setInterval("getUp('test',1)", 2000);
  23. setInterval("getUp('test2',3)", 2000);
  24.  
  25. <span id="test">1.000</span>
  26. <span id="test2">3.000</span>
Crozin
window.setTimeout() na 2 sekundy z wywołaniem tej funkcji + window.setInterval() na 5 sekund (w tym już tylko wywołanie funkcji)
Mike122
Cytat(Crozin @ 12.08.2009, 17:11:18 ) *
window.setTimeout() na 2 sekundy z wywołaniem tej funkcji + window.setInterval() na 5 sekund (w tym już tylko wywołanie funkcji)


Mógł byś trochę jaśniej wstydnis.gif
Przykład..
kamil4u
Poczytaj o obu funkcjach podanych przez ~Crozin-a na MDC(taka strona). Następnie, najpierw wykonujesz:
Cytat
window.setTimeout() na 2 sekundy
, gdzie jako funkcję podajesz:
Cytat
wywołaniem tej funkcji + window.setInterval()
, a funkcję setInterval ustawiasz na:
Cytat
5 sekund
, a jako funkcję(w setInterval) podajesz:
Cytat
(w tym już tylko wywołanie funkcji)
Mike122
  1. var time1 = "2000";
  2. var time2 = "5000";
  3. if(time1!=time2){
  4. window.setTimeout("getUp('test', 1)", time1);
  5. window.setInterval("getUp('test', 1)", time2);
  6. }else{
  7. window.setTimeout("getUp('test', time2);
  8. }


Jedak nie działa poprawnie...
Crozin
Nie do końca dobrze mnie zrozumiałeś... wywołanie setIntervala miało być wewnątrz setTimeouta:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4.  
  5. <title>Przykładowy dokument</title>
  6.  
  7. <style type="text/css"></style>
  8. <script type="text/javascript">
  9. function invokeMe(){
  10. document.getElementById("target").appendChild(document.createTextNode((new Date()) + "\n"));
  11. }
  12.  
  13. document.addEventListener("DOMContentLoaded", function(){
  14. window.setTimeout(function(){
  15. invokeMe();
  16. window.setInterval(invokeMe, 5000);
  17. }, 2000);
  18. }, false);
  19. </script>
  20. </head>
  21. <pre id="target"></pre>
  22. </body>
  23. </html>
Mike122
By było super ale pod IE już nie działa worriedsmiley.gif
Crozin
Pod IE nie działa jedynie ze względu na sposób w jaki podpiąłem zdarzenie DOMContentLoaded. Przeczytaj w googleu o: "Cross-browser DOM ready". Sam mechanizm będzie działał.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.