Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: setInterval z parametrami
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
php programmer
Witam
Mam pytanie, otóż potrzebuję użyć funkcji setInterval(przesun,5);
gdzie przesuń to nazwa funkcji, ale jak widać nie wypisuje sie tu nawiasów
podczas gdy funkcja przesuń wygląda tak

Kod
function przesun(pozycja){...


czyli jak widac jest parametr...
Jak mam nakazac aby setInterval wywoływał funkcję przesuń z określonym parametrem ?

A jeśli to nie możliwe to czy istnieje jakiś odpowiednik funkcji isset?
Wtedy bym mógł przynajmniej w funkcji przesun sprawdzac czy
zmienna jest zdefiniowana a jesli nie to bym jej nadal jakas domyslna wartosc
nospor
http://academ.hvcc.edu/~kantopet/old/javas...ent=basic+dhtml
Cytat
The setInterval( ); method allows you to set a timer to execute a piece of code at regular intervals. It takes two arguments, a string and an integer. The string is the code to be executed (normally a function call of some sort) and the integer is the time to delay execution in milliseconds.

pierwszym argumentem jest string. Uciebie tak nie jest. I ten string zawiera pelne wywolanie funkcji:
setInterval('przesun(2)',5);
php programmer
THX
a czy można jeszcze zmienić wartość
drugiego parametru bez przeładowywania strony?
nospor
ale kiedy zmienic? Przed wywolaniem setInterval? Daj se zmienną
inetrval=5;
i ją zmieniaj.
php programmer
tak robie
ale mi nie działa
Kod
<IMG src="galeria/1.jpg" id="zdjecie_z_galerii">

        <SELECT id="sekundy"
        <OPTION value="1000">1 sekundę</OPTION>
        <OPTION value="2000">2 sekund</OPTION>
        <OPTION value="3000">3 sekund</OPTION>
        <OPTION value="5000">5 sekund</OPTION>
        <OPTION value="7000">7 sekund</OPTION>
        <OPTION value="12000">12 sekund</OPTION>
        </SELECT>




Kod
<script language="javascript">
var numer_zdjecia = 1;
var sek = document.getElementById('sekundy');
setInterval('GetPhoto(1)',sek.value);

function GetPhoto(offset){
numer_zdjecia += offset;
if (numer_zdjecia > 9) numer_zdjecia = 1;
if (numer_zdjecia < 1) numer_zdjecia = 9;
var z = document.getElementById('zdjecie_z_galerii');
z.src = 'galeria/' + numer_zdjecia + '.jpg';
}

</script>


no chyba ze inetrval jest zmienną zadeklarowaną już w JS, tak ?
nospor
No ale kiedy ty wywołujesz oto:
Kod
var numer_zdjecia = 1;
var sek = document.getElementById('sekundy');
setInterval('GetPhoto(1)',sek.value);

Z kodu ktory pokazales to wnioskuję ze tylko na początku strony i wowczas jeszczewartosci z selecta moze nie byc. Takie miales zalozenie? czy moze ty chcesz to wywolac, gdy zmienisz selecta? Jesli tak to musisz dac to w onchange dla selecta
php programmer
dalej nie działa sad.gif
Kod
        <SELECT id="sekundy" onChange="SetSeconds()">
        <OPTION value="1000">1 sekundę</OPTION>
        <OPTION value="2000">2 sekund</OPTION>
        <OPTION value="3000">3 sekund</OPTION>
        <OPTION value="5000">5 sekund</OPTION>
        <OPTION value="7000">7 sekund</OPTION>
        <OPTION value="12000">12 sekund</OPTION>
        </SELECT>


Kod
<script language="javascript">
var numer_zdjecia = 1;
var sek = document.getElementById('sekundy');
setInterval('GetPhoto(1)',sek.value);

function GetPhoto(offset){
numer_zdjecia += offset;
if (numer_zdjecia > 9) numer_zdjecia = 1;
if (numer_zdjecia < 1) numer_zdjecia = 9;
var z = document.getElementById('zdjecie_z_galerii');
z.src = 'galeria/' + numer_zdjecia + '.jpg';
}

function SetSeconds(){
var numer_zdjecia = 1;
var sek = document.getElementById('sekundy');
setInterval('GetPhoto(1)',sek.value);
alert(sek.value);
}
</script>

PS1: kolejnosci wystepowania kodów taka jak przedstawiona tutaj
PS2: tak, głównie chodzi mi o to, aby przy zmianie selecta zmieniała się szybkość wyświetlania
PS3: bo serii debugowania, stwierdziłem, że to zachowuje się tak jak by
kumulowało wszystkie rozkazy setInterval, czyli jak zmienie to nie zmieni sie
a jedynie doda nowy setInterval
nospor
w linku ci ci wczesniej podalem byla mowa o clearInterval. Musisz tego uzyc:

Kod
<script language="javascript">
numer_zdjecia = 1;
var timer_id = null;
function GetPhoto(offset){
numer_zdjecia += offset;
if (numer_zdjecia > 9) numer_zdjecia = 1;
if (numer_zdjecia < 1) numer_zdjecia = 9;
var z = document.getElementById('zdjecie_z_galerii');
z.src = 'galeria/' + numer_zdjecia + '.jpg';
}

function SetSeconds(){
var numer_zdjecia = 1;
var sek = document.getElementById('sekundy');
if (timer_id != null)
    clearInterval(timer_id);
timer_id = setInterval('GetPhoto(1)',sek.value);
alert(sek.value);
}
</script>
php programmer
ok teraz mi działa jak trzeba
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.