Autor | Zpráva | ||
---|---|---|---|
FantomX1 Profil |
#1 · Zasláno: 1. 5. 2005, 14:44:39
Preco zavolanie funkcie z inej funkcie neberie lokalnu premennu ako svoj atribut?
Mam tu vyorovu funkciu: function move(prem) { //zavolam funckiu pri nacitani stranky <body onLoad="move(1)" objekt=document.getElementById('flyer').style; //zvolim si prvok pre pracu var k=160; //urcim prvotnu suradnicu prvku var e=document.getElementById('flyer').clientHeight; //zistim offset prvku pri pripadnu potrebu if (prem==1) { /*Ak bola funkcia zavolana s parametrom 1 text sa zacne hybat, ale ak vsak, ak vsak bola zavolana s inym parametrom text by sa mal zastavit.*/ if (y<=k-e) y=k; y -=3; objekt.top=y+"px"; setTimeout("move(prem)",50); } Ale ked spustim funkciu move(0) tak mi pri funkcii setTimeout vypise ze premenna prem nie je definovana. Napada ma jedna moznost, ze po nacitani stranky sa opakuje funkcia v pravidelnych intervaloch. Tak v case 0 ms sa nastartuje funkcia move(1) a ja v case teoreticky 25 ms spustim funkciu move(0) rucne. Takze sa vlastne nic nestane, ani sa nezvacsi suradnica prvku, ale o dalscih 25 ms sa uz zase pohne prvok. A tak sa stane o dalsich 50 ms a o dalsich 50 ms atd. Ale ako potom mozem zastavit konatie cyklu funkcii move()? Je na to nejaky prikaz ze ak a==1 tak sa vypne setTimeout? |
||
centi Profil |
#2 · Zasláno: 1. 5. 2005, 15:06:53
Pretože argument funkcie setTimeout nemôže byť funkcia, ale jej názov, teda reťazec. Skús takto"
setTimeout("move("+prem+")",50); |
||
Leo Profil |
#3 · Zasláno: 1. 5. 2005, 15:16:00
Zkuste tu promennou deklarovat jako globalni, Leo
|
||
FantomX1 Profil |
#4 · Zasláno: 1. 5. 2005, 15:28:41
OK, skusil som radu centi -ho a fakt to tak ide, ale nic to nemeni na tom ye setTimeout sa nadalej vykonava, potrebujem ho po prejdeti prvku mysou nejak zastvit, ale neviem ako.
|
||
centi Profil |
#5 · Zasláno: 1. 5. 2005, 15:34:13
FantomX1
Sprav si funkciu, ktorä zavesíš na onmouseover (alebo čo potrebuješ), ktorá zavolá funkciu move s parametrom, ktorý bude obsahovať 'stop' namiesto čísla, teda napr:
a funkciu move uprav tak, aby najprv testovala, či netreba stopnúť, ak nie, tak očakáva nejaké čislo:
Netestoval som to, ale tak nejak by to mohlo ísť. |
||
FantomX1 Profil |
#6 · Zasláno: 1. 5. 2005, 15:41:47
OK, zase som sa hrabal netom a nasiel to co som hladal, dnes mam asi stastny den. Interval sa da zrusit funkciou window.clearInterval(IDintervalu); a aby sme vedeli ID intervalu, musime dat funkciu do premennej teda napriklad var IdInt=setInterval('ahoj()', 10) a to iste sa tyka aj setTimeoutu. Je to na stranke DEV Guru JavaScript Object
|
||
centi Profil |
#7 · Zasláno: 1. 5. 2005, 15:43:00
FantomX1
Presne to som napísal :-) |
||
FantomX1 Profil |
#8 · Zasláno: 1. 5. 2005, 15:43:57
Dik centi ale uz som na to prisiel a toto zarucene funguje . Teda dosiahol som to co som chcel, vertikalny skrolovaci text a ked nad nadidem mysou tak sa zastavi a ked z neho zidem tak sa zase hybe. Myslim ze coskoro to bude na stranke www.CiernyPeter.sk
|
||
FantomX1 Profil |
#9 · Zasláno: 1. 5. 2005, 20:56:46
Aha, ano, vsimol som si, ale trochu neskor, tak dik :)
|
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0