Voglio emulare il cursore di scrittura che lampeggia per un po' e poi scrive del testo, come se stesse scrivendo dal vivo...
Questo è il codice:
Allora la console mi da errore che non trova timer nella cleartimeout...codice:function caretWrite(repeat,tempo,step){ console.log('1'); step+=1; clearTimeout(timer); if (step < repeat) { var val=$('#saluto').html()=='' ? "|" : ''; $('#saluto').html(val); timer=setTimeout(caretWrite(repeat,tempo,step),tempo); } } function scrivi(){ var text="Hi"; var id='saluto'; var tempo=1000; var caretRepeat=6; var timer; timer=setTimeout(caretWrite(caretRepeat,tempo,0),tempo); } $(document).ready(function(){ scrivi(); console.log('2'); });
Penso sia un errore di scope che si perda la variabile timer anche se gerarchicamente è nella funzione "superiore"...
Pensavo poi che magari il problema fosse la chiamata asincrona del timer che magari quando viene richiamata la funzione carewrite è "già finita" la funziona scrivi() e quindi ha rilasciato la variabile timer, per questo ho messo i log di 1 e 2, in console ho il log di 1 (quindi subito dopo l'errore) e non di 2, quindi penso che alla chiamata del timer sia ancora "attiva" la funzione scrivi()...
Ho un po' di confusione...
Perchè fa così, cosa sto sbagliando (concettualmente)?
Grazie

Rispondi quotando