Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Stoper
Forum PHP.pl > Forum > Przedszkole
szczabik
Zrobiłem takie coś
  1. <?php
  2. echo "<script type=\"text/javascript\">
  3. function stoper() {
  4. ile=1200;  
  5. minut = Math.floor(ile / (1000 * 60)-godzin*60);
  6. sekund = Math.floor(ile / 1000 - godzin*60*60 - minut*60);
  7.  
  8. window.document.getElementById(\"div1\").innerHTML = ‘Pozostalo: ‘+minut+’ minut, ‘+sekund+’ sekund’;
  9.  
  10. }
  11.  
  12. window.setInterval(stoper,1000);
  13. </script>
  14.  
  15.  
  16. <div id=\"div1\"></div>";
  17. ?>


i nie chce coś liczyć ile czasu pozostało i nie wiem co zrobiłem źle może mi ktoś pomóc z tym kodem ?
wookieb
A gdzie masz zmienną "godzin" ?
szczabik
Zrobiłem tak
  1. <?php
  2. echo "<script type=\"text/javascript\">
  3. function stoper() {
  4. ile=1200;
  5. godzin = Math.floor(ile / (1000 * 60 * 60));  
  6. minut = Math.floor(ile / (1000 * 60)-godzin*60);
  7. sekund = Math.floor(ile / 1000 - godzin*60*60 - minut*60);
  8. window.document.getElementById(\"div1\").innerHTML = \"Pozostalo: \"+minut+\" minut \"+sekund+\" sekund\";
  9.  
  10. }
  11.  
  12. window.setInterval(stoper,1000);
  13. </script>
  14.  
  15.  
  16. <div id=\"div1\"></div>";
  17. ?>

i wyświetla cały czas Pozostalo: 0 minut 1 sekund
Stała ile=1200 gdzie 1200 to 20 min i chciał bym by od 20 min liczyło mi do 0
I nie wiem jak to zrobić
wookieb
No pewnie ze wyswietla cały czas ta sama wartosc po przeciez nie zmieniasz wartosci zmiennej 'ile'.
Kod
var ile=1200;

function stoper()
{
godzin=Math.floor(ile/3600);

minut =Math.floor(ile/60)%60;
sekund =ile/%60;

document.getElementById('div1').innerHTML = 'Pozostalo: '+minut+' minut '+sekund+' sekund';
ile--;
}

var intervalHandler=setInterval(stoper,1000);
szczabik
Zrobiłem tak jak piszesz i nic nie wyświetla
wookieb
Literówka...
Kod
sekund =ile%60;

którą mogłeś sobie poprawić....
szczabik
Dalej nic się nie wyświetla
wookieb
Jak nie działa jak działa
Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
  <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />

  <link rel="stylesheet" href=" [nazwa_arkusza_stylow.css] " type="text/css" />
  
</head>
<body>
<div id="div1"></div>
<script type="text/javascript">
var ile=1200;

function stoper()
{
godzin=Math.floor(ile/3600);

minut =Math.floor(ile/60)%60;
sekund =ile%60;

document.getElementById('div1').innerHTML = 'Pozostalo: '+minut+' minut '+sekund+' sekund';
ile--;
}

var intervalHandler=setInterval(stoper,1000);
</script>
</body>
</html>

Ale jak znam życie to bezmyślnie skopiowałeś i nie poprawiłeś ' które sa zamiennikami \" w twoim kodzie.

Wiec zacznij myśleć i popraw to co musisz SAM poprawić.
szczabik
Dopisałem taki kod
Kod
if ('+minut+' == 0 && '+sekund+' == 0){
clearInterval(intervalHandler);
}

by zatrzymać stoper gdy dojdzie do 0 ale coś ten kod nie działa bo stoper się nie zatrzymuje. Wie ktoś czemu ?
erix
Cytat
Kod
if ('+minut+' == 0 && '+sekund+' == 0){

Masz błąd w instrukcji warunkowej. Źle wstawiasz zmienne do porównania i wychodzi Ci babol w składni. Chwyć za kurs JavaScript, bo to są podstawy.
szczabik
Może mi ktoś powiedzieć co źle zrobiłem w tej instrukcji warunkowej
erix
Wkleiłeś bezmyślnie kod z:
Kod
'Pozostalo: '+minut+' minut '+sekund+' sekund'

Zobacz, jak wygląda instrukcja warunkowa w JS i co oznaczają użyte operatory +.
szczabik
Zrobilem tak i też nie działa
Kod
if (minut == 0 && sekund == 0){
clearInterval(intervalHandler);
}
wookieb
Cytat(szczabik @ 26.11.2008, 16:40:44 ) *
Dopisałem taki kod
Kod
if ('+minut+' == 0 && '+sekund+' == 0){
clearInterval(intervalHandler);
}

by zatrzymać stoper gdy dojdzie do 0 ale coś ten kod nie działa bo stoper się nie zatrzymuje. Wie ktoś czemu ?


A czy nie prościej
Kod
if(ile==0)

...
szczabik
A czy nie prościej
Kod
if(ile==0)

Zrobilem tak i dalej liczy nie zatrzymuje sie na 0
erix
Lepiej sprawdzać, czy jest mniejsze/równe zeru, bo podejrzewam, że wyłączasz stoper, gdy wartość jest -1. winksmiley.jpg
szczabik
To jak mam to zrobić gdy dojdzie do 0 by się zatrzymało
wookieb
Czy to wógóle czytasz co się do ciebie pisze?questionmark.gif
Kod
if(ile<=0)
{
clearInterval(intervalHandler);
}
szczabik
Zrobilem już tak wcześniej i się nie zatrzymuje
wookieb
Albo ja jestem głupi ale wykazujesz nadzwyczajny poziom niskiej inteligencji
Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
  <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />

  <link rel="stylesheet" href=" [nazwa_arkusza_stylow.css] " type="text/css" />
  
</head>
<body>
<div id="div1"></div>
<script type="text/javascript">
var ile=5;

function stoper()
{
godzin=Math.floor(ile/3600);

minut =Math.floor(ile/60)%60;
sekund =ile%60;

document.getElementById('div1').innerHTML = 'Pozostalo: '+minut+' minut '+sekund+' sekund';
ile--;
    if(ile<0)
    {
    clearInterval(intervalHandler);
    }

}

var intervalHandler=setInterval(stoper,1000);
</script>
</body>
</html>

I jak chcesz napisać "nie działa" to ułóż to ładniej w słowa tongue.gif
szczabik
No teraz działa ale jeszcze jest jedno niedociągnięcie stoper zatrzymuje się na Pozostalo: 0 minut 1 sekund
wookieb
Cytat(szczabik @ 26.11.2008, 17:39:16 ) *
No teraz działa ale jeszcze jest jedno niedociągnięcie stoper zatrzymuje się na Pozostalo: 0 minut 1 sekund

I nie ułozyłeś ładnie w słowa ;>
Pomyśl jaką wpisałeś instrukcje warunkowa bo raczej nie skopiowałeś.

A przemyśl sobie sekunda po sekundzie. Najlepiej 1201 razy jaka będzie za każdym razem wartość "ile"
szczabik
Jaką funkcją mogę zrobić by samoczynnie wcisnął się przycisk submit w formularzu gdy stoper dojdzie do 0
erix
A może frytki do tego?

http://www.javaworld.com/jw-06-1996/jw-06-javascript.html
szczabik
Zrobiłem tak
  1. <?php
  2. if (isset($_POST['submit'])) {
  3. echo 'Test';
  4. } else {
  5.  
  6. echo "<script type=\"text/javascript\">
  7. var ile=12;
  8.  
  9. function stoper()
  10. {
  11. godzin=Math.floor(ile/3600);
  12. minut =Math.floor(ile/60)%60;
  13. sekund =ile%60;
  14. document.getElementById('div1').innerHTML = 'Pozostalo: '+minut+' minut '+sekund+' sekund';
  15. ile--;
  16.  
  17. if(ile<0){
  18. clearInterval(intervalHandler);
  19. alert(\"Czas na rozwiązanie quizu minął!\");
  20. window.setTimeout(formularz,10000)
  21. submit();
  22. }
  23.  
  24. }
  25. var intervalHandler=setInterval(stoper,1000);
  26.  
  27.  
  28.  
  29. </script>
  30.  
  31. <div id=\"div1\"></div>";  
  32.  
  33. <form name='act1' method='post'>
  34. <table cellpadding='0' cellspacing='0' class='center'>
  35. <tr>
  36. <td align='center' colspan='2'>
  37. <input type='submit' name='submit' value='Dodaj' class='button'>
  38. <input type='reset' value='Wyszyść' class='button'>
  39. </td>
  40. </tr>
  41. </table>
  42. </form>";
  43. }
  44. ?>

i formularz nie wysyła się sam po upłynięciu czasu.
Może mi ktoś pomóc jak mam to zrobić ?
erix
Ok, submit, ale submit czego? Musisz dać obiekt formularza do tego. Poszukaj w Google, tego jest pełno.
szczabik
Zrobiłem tak
  1. <?php
  2. if (isset($_POST['submit'])) {
  3. echo 'Test';
  4. } else {
  5.  
  6. echo "<script type=\"text/javascript\">
  7. var ile=12;
  8.  
  9. function stoper()
  10. {
  11. godzin=Math.floor(ile/3600);
  12. minut =Math.floor(ile/60)%60;
  13. sekund =ile%60;
  14. document.getElementById('div1').innerHTML = 'Pozostalo: '+minut+' minut '+sekund+' sekund';
  15. ile--;
  16.  
  17. if(ile<0){
  18. clearInterval(intervalHandler);
  19. alert(\"Czas na rozwiązanie quizu minoł!\");
  20. setTimeout(\"document.formularz.submit()\", 3000)
  21. }
  22.  
  23. }
  24. var intervalHandler=setInterval(stoper,1000);
  25.  
  26.  
  27.  
  28. </script>
  29.  
  30. <div id=\"div1\"></div>";  
  31.  
  32. <form name='formularz' method='post'>
  33. <table cellpadding='0' cellspacing='0' class='center'>
  34. <tr>
  35. <td align='center' colspan='2'>
  36. <input type='submit' name='submit' value='Dodaj' class='button'>
  37. <input type='reset' value='Wyszyść' class='button'>
  38. </td>
  39. </tr>
  40. </table>
  41. </form>";
  42. }
  43. ?>

i się nie wysyła po odliczeniu czasu
erix
A jakiś błąd wysypuje?
szczabik
Właśnie nic żadne błąd się nie pojawia po odliczeniu czasu pojawia się alert. Czas na rozwiązanie quizu minął i potem powinien się sam formularz wysłać po 3 s ale nic się nie dzieje i się nie wysyła
erix
Cytat
message: Statement on line 1: The Object does not implement [[Call]]
Backtrace:
Line 1 of unknown script
document.formularz.submit()


Kolejny raz powtarza się ten sam błąd. Nie nazywajcie elementów formularza tak, jak predefiniowane metody/zmienne. tongue.gif
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.