Autor | Zpráva | ||
---|---|---|---|
tomyc Profil * |
#1 · Zasláno: 1. 3. 2012, 22:30:27
Zdravím,
nemůžu přijít na to, jak např. plynule roztáhnout <div>. Našel jsem tu na diskusi a na netu nějaké návody, ale nic mi nefunguje. Mám následující funkci function fadeIn(count) { var timer = null; if(count < 500 ) { container.style.width = count + "px"; //alert(count); timer = setTimeout(fadeIn(++count), 300); } else { clearTimeout('timer'); return true; } } Pokud nechám funkci fadeIn() proběhnout s alert(count);, funguje správně. S každým odklepnutím okna alert se <div> zvětší o 1px. Pokud však alert(count); odstraním, objekt se roztáhne okamžitě bezčasové prodlevy. Děkuji za radu |
||
Louka Profil |
nemá být
setTimeout("fadeIn("+(++count)+")",300); ?
EDIT: Asi hloupost, to by jinak nešlo ani s tím alert()... Co píše JS konzola? Resp. můžeš to zkusit předělat na setInterval(); |
||
_es Profil |
#3 · Zasláno: 1. 3. 2012, 22:53:39
tomyc:
timer je lokálna premenná funkcie fadeIn a do funkcie clearTimeout patrí ako argument návratová hodnota funkcie setTimeout , nie textový reťazec 'timer' . Celkovo by si si mal najprv naštudovať základy JS, než sa v ňom pokúsiš programovať.
Louka: „nemá být setTimeout("fadeIn("+(++count)+")",300);?“ Asi ani radšej nie: Časté potíže, zajímavosti a poučné debaty » Nepoužívejte eval , ani jeho obdoby
|
||
Louka Profil |
#4 · Zasláno: 1. 3. 2012, 23:06:08
_es:
Utvrdil jsi mě v tom, že se potřebuju okamžitě vyspat; uznávám, že jsem slepý... :-/ |
||
weroro Profil |
setTimeout s rekurziou sa používal v časoch, keď ešte nebola podpora setIntervalu (IE3 a nižšie)
var count = 0; var step = 1; var container; function fadeIn() { container = document.getElementById('roztahuj'); count += step; container.style.width = count + "px"; if (count >= 500) { clearInterval(t); count = 0; } } var t = setInterval("fadeIn()", 10); |
||
tomyc Profil * |
#6 · Zasláno: 2. 3. 2012, 09:49:49
weroro:
Moc děkuji. Teď to funguje jak má. Jen v řádku var t = setInterval("fadeIn()", 10); asi neměly být uvozovky, ne? Upravil jsem na var t = setInterval(fadeIn, 10);
_es: Mám celou knihu základy javascriptu. Přečetl jsem jí a než jsem došel na konec pamatoval jsem si sotva 10%. Pro mne je lepší učení za pochodu. Dám si nějaký cíl, co chci vytvořit a na tom se učím. Nejlíp si člověk zapamatuje něco, na čem si láme hlavu. Nejprve zkouším vyřešit sám, hledám v knihách a na netu. Pokud nedosáhnu výsledku, zeptám se někoho kdo je chytřejší než já. Proto jsem napsal sem na toto fórum. Stejným způsobem jsem začínal s HTML, PHP i třeba s programování PIC. Proto když si pročítám tuto diskusi a vidím dotazy, které mi příjdou neskutečně hloupé, vzpomenu si na své začátky. Řešil jsem to samé. Co mi dneska přijde k smíchu byl dříve neřešitelný problém. |
||
Časová prodleva: 11 let
|
0