Newsgroup: it.comp.lang.javascript
Titolo: Sleep

Come posso sospendere l'esecuzione di uno script per x secondi?
Esiste qualcosa tipo sleep(x)?
Ciao :).
------------------------------------
"Computer Science is no more about
 computers  than  astronomy is about
 telescopes."
::[E. W. Dijkstra]
Posted from X-Privat Free NNTP server - 
www.x-privat.org

no
dividi la tua function in 2 parti e, al termine della prima ,metti un bel
setTimeout("tuasecondafunzione(),numero_di_millisecondi_di_attesa);


Posted from X-Privat Free NNTP server - 
www.x-privat.org

dipende da cosa dipende il while (scusa il giro di parole)
comunque la logica è come ti ho scritto: chiami una function ogni tot
secondi, questa function varia l'immagine.
Se per esempio il while dipende dal numero di immagini puoi non mettere il
setTimeout quando arrivi alla fine; se dipende dalla pressione di un tasto
da parte dell'utente puoi settare un flag etc etc

 Hai idea di come posso fare?
<html>
<head>
        <script type="text/javascript" language="javascript">
                // **** QUESTA FUNZIONE e' PER LA COMPATIBILITA' IE + NETSCAPE
                // Rilascia il riferimento all'oggetto richiesto dipendente da document
                // Compatibile con IE, NetScape
                function oggetto_compatibile(NomeObj) {
                        if (document.layers){
                                return document.layers[NomeObj].innerHTML;
                        }
                        else if (document.all){
                                return document.all[NomeObj];
                        }
                        else if(document.getElementById){
                                return document.getElementById(NomeObj);
                        }
                }
                // suppongo che la variabile arrImmagini contiene i percorsi delle
                // immagini
                cont_img=0;
                function cambia_immagine() {
                        oggetto_compatibile("immagine").src=arrImmagini[cont_img];
                        cont_img++;
                        if (cont_img>=arrImmagini.length) cont_img=0;
                        // cambia l'immagine ogni srcondo
                        setTimeout("cambia_immagine()",1000);
                }
        </script>
</head>
<body onload="cambia_immagine();">
        <img id="immagine" src="#">
</body>
</html>
-- 
Ciao,
        Fabrizio
<=- 
http://www.negusweb.it
 -=>

                         }
Che io sappia, document.layers non ha mai supportato "innerHTML"
Se avevi l' immagine in un layer, con NS4.x, dovevi richiamarla cosi':
document.layers[NomeObj].document.images(NomeImmagine).src=...
Per funzionare con con tutti i browser devi identificare l' immagine
con il "name", e, per cambiarla:
document.images["immagine"].src=arrImmagini[cont_img].src
 ,--------------------------- [ codice ]----------------------------
|  <html>
|  <head>
|  <script type="text/javascript" language="javascript">
|  var gfC_imm=["1R","2R","3R","4R","5R"],gfC_immSRC=[],cont_img=0;
|  for(gfC_j in gfC_imm){
|  	gfC_immSRC[gfC_j]=new Image();
|  	gfC_immSRC[gfC_j].src=gfC_imm[gfC_j]+".gif";
|  }
|  function cambia_immagine() {
|      document.images["immagine"].src=gfC_immSRC[cont_img++].src;
|      cont_img=cont_img>=gfC_immSRC.length?0:cont_img++;
|      setTimeout("cambia_immagine()",1000);
|  }
|  </script>
|  </head>
|  <body onload="cambia_immagine();">
|          <img name="immagine" src="5R.gif">
|  </body>
|  </html>
 `------------------------------------------------------------------
        <img id="immagine" src="#">
A Mozilla non piace tanto che tu non dia l' indirizzo all' immagine.
-- 
Ciao
  [web]  
www.gfcarlotti.it
 
    [mail]  text welcome in Reply-To
      [pgp]  
www.gfcarlotti.it/pgp/franco.asc

 A Mozilla non piace tanto che tu non dia l' indirizzo all' immagine.
Quanto la fa lunga per un indirizzo ...


No, con l'ID.
Yep, l'ID e' univoco mentre il name non lo e'.
Teoricamente se uno vuole usare il "name", al posto di getElementById,
deve usare getElementsByName che ritorna un array con gli elementi che
hanno quel name e poi identificare all'interno di esso quello che gli
interessa.
'bye e Auguri di Buon Natale a tutti
P.S. msg piu' che altro per fare gli auguri e non essere completamente
OFF TOPIC :)

                         }
Primo:
getElementById *deve* essere chiamato prima di document.all e
document.layers. Oltre che essere un buon metodo di sviluppo, e dare
supportare quindi il metodo *standard* (altrimenti IE usa document.all al
posto di document.getElementById nonostante lo supporti), ti evita gran
casini con Opera, che "simula" le collection document.layers e document.all
ma non le supporta realmente; mentre invece implementa correttamente il
metodo W3C standard getElementById.
Secondo:
document.layers[NomeObj].innerHTML non ha senso. Prima di tutto, NS4.x
*non* supporta l'innerHTML, seconda di poi se anche lo supportasse cosi'
come hai scritto non ti ritornerebbe un riferimento all'oggetto layer,
bensi' la stringa relativa al contenuto dello stesso.
Terzo:
Come giustamente ti ha fatto presente Gianfranco Carlotti, per renderlo
*realmente* cross-browser ed evitare un sacco di mal di testa e codice in
piu', basta usare l'attributo "name", dato che la collection
"document.images" e' supportata anche dai browser piu' vecchi.
Quindi, un:
document.images["myimage"].src="immagine.jpg";
Funziona su qualsiasi browser senza bisogno di funzioni di recupero
riferimento oggetti "cross-browsing".
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 No, con l'ID.
No, ha ragione Gianfranco. Con il name funziona su tutti i browser, senza
bisogno di artifici.


 'bye e Auguri di Buon Natale a tutti
Altrettanto.


e nuovi, e quindi non necessita di ricorrere alle API del DOM del W3C.
Vero, sperando che non ci siano modifiche in futuro se i browsers
diventeranno strictly W3C  :)
'bye

 diventeranno strictly W3C  :)
Dubito che elimineranno qualcosa del genere, ma se mai succedesse che un
browser in futuro non supporti document.images, conviene in ogni caso
emulare tale collectioni per retrocompatibilita':
if (typeof document.images=="undefined" && document.getElementsByTagName)
	document.images=document.getElementsByName("IMG");


 bisogno di artifici.
Penso che sia la stessa cosa se si usa l'ID.
Ho testato diversi codici con quella routine, sia su IE che su NS, dando
risultati positivi.


 risultati positivi.
Su Netscape 4.x e su Opera con emulazione IE/NS, il tuo codice non avrebbe
funzionato correttamente, o avrebbe dato risultati anomali.
La parte di NS4.x era completamente errata da un punto di vista
logico/funzionale.
