[js] stoper z funkcją pause

HTML to podstawy w dziedzinie tworzenia stron WWW, Style CSS warto opanować, bowiem za ich pomocą można dostosować odpowiednio wygląd swojej witryny WWW. Zagłębiamy się dalej i udostępniamy w tym forum możliwość zadawania pytań o JavaScript.
ODPOWIEDZ
Kiluk
Nowy
Nowy
Posty: 53
Rejestracja: wt lip 03, 2007 7:41 am

[js] stoper z funkcją pause

Post autor: Kiluk »

Cześć. mam taki kod w js odpowiedzialny za start i stop czasu (taki sobie stoper)

Kod: Zaznacz cały

function startTimer()
{
    if(timer)
    {
        return false;
    }
    timerstart  = new Date().getTime();
    timer       = setInterval(timerCount, 1000);
};

function timerCount()
{
    var diff = parseInt((new Date().getTime()-timerstart)/1000, 10);
    document.getElementById('min').value = Math.floor(diff/60);
    document.getElementById('sec').value = diff%60;
};

function stopTimer()
{
    clearInterval(timer);
};
Oraz wycinek z html`a

Kod: Zaznacz cały

<td class="w33" rowspan="2">
                        <div class="center">
                            <input type="button" value="Start" onclick="startTimer()"> 
                            <input type="button" value="Stop" onclick="stopTimer()"> 
                        </div>
                        <div class="aleft w20">
                            min:<br>
                            data:                            
                        </div>
                        <div class="aleft w30">
                            <input type="text" name="min" id="min" size="7" maxlength="3" value="<0>" onfocus=blur()><br>
                            <input type="text" name="date" id="date" size=7 value="">
                        </div>
                        <div class="aleft w20">
                            sek:<br>
                            godz:
                        </div>
                        <div class="aleft w30">
                            <input type="text" name="sec" id="sec" size="5" maxlength="3" value="<0>" onfocus=blur()><br> 
                            <input type="text" name="time" id="time" size=6 value="">
                        </div>
                    </td>
Poradźcie mi jak zrobić dodatkowo przycisk "pause" chodzi mi o to, aby zatrzymac czas i ponownie go uruchomic kontynuując od wartości zatrzymanej.

Kiluk
HaWaJ
Nowy
Nowy
Posty: 159
Rejestracja: pt kwie 06, 2007 5:12 pm

Re: [js] stoper z funkcją pause

Post autor: HaWaJ »

A zobacz takie coś:

Kod: Zaznacz cały

function stopTimer()
{
    clearInterval(timer);
};
na

Kod: Zaznacz cały

function stopTimer()
{
    clearTimeout(timer);
};
albo

Kod: Zaznacz cały

function stopTimer()
{
    window.clearTimeout(timer);
};
oraz moze zmien zmienne:

timerstart = new Date().getTime();
timer = setInterval(timerCount, 1000);

na globalne i wsadz przed funkcję.
Kiluk
Nowy
Nowy
Posty: 53
Rejestracja: wt lip 03, 2007 7:41 am

re

Post autor: Kiluk »

Niestety zaden sposób nie działa.
"stop" zatrzymuje mi czas, ale przycisk start juz go nie uruchamia od momentu na którym został zatrzymany.

Kiluk
fan_pascala
Nowy
Nowy
Posty: 59
Rejestracja: czw lip 12, 2007 7:29 pm
Lokalizacja: Niepołomice
Kontakt:

Re: [js] stoper z funkcją pause

Post autor: fan_pascala »

Proponuję po linii:

Kod: Zaznacz cały

  clearInterval(timer)
ręcznie wyzerować zmienną timer, gdyż funkcje clearInterval czy clearTimeout tego nie robią, a jedynie uwalniają "licznik" przeglądarki podpięty pod idetyfikator timer.
Przy kolejnej próbie odpalenia stopera, timer ma wartość różną od zera, w skutek czego funkcja startTimer() przedwczesnie kończy swoje działanie.

Przy cieżko strawnych przypadkach polecam używania metody alert(cos_do_wyswietlenia). Za jej pomocą możemy łatwo śledzić kolejne etapy naszego skryptu. Prawie jak debugger ;).
ODPOWIEDZ