Autor Zpráva
tomyc
Profil *
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
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
_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 *
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.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: