Newsgroup: it.comp.lang.javascript
Titolo: setTimeout ?

salva ragazzi , non sono pratico di javascript
e quello che son riuscito a scrivere e' questo
function apri_porte() {
div1 = 
(document.getElementById)?document.all["porta1"]:document.getElementById("porta1");
div2 = 
(document.getElementById)?document.all["porta2"]:document.getElementById("porta2"); 
k=65;
for(i=0;i<=k;i++) ;
{
div1.style.left=(390-i);
div2.style.left=(455+i);
}
}
che dovrebbe simularmi l' apertura di due porte (tipo porte automatiche)
il problema e che dovrei inserire un ritardo con SetTimeout ma ho 
provato in tutti i modi e non ne ho capito nulla

 provato in tutti i modi e non ne ho capito nulla
la scelta mi sembra corretta: setTimeout. il problema è che devi terminare
la function, e quindi non puoi usare un for.
vedo che k è già globale.
Potresti:
a) nella apri_porte togliere il for e chiamare "cicla(0,div1,div2)"
b) creare la cicla, del tipo
    function cicla(i,div1,div2) {
     if(i>k)
      return;
     div1.style....
     div2.style...
     setTimeout("cicla("+(++i)+","+div1+","+div2+")",100); //100 ms
    }
http://developer.mozilla.org/en/docs/DOM:window.setTimeout
-- 
"La realtà è un'illusione causata dall'assenza di alcool."
									      A.

 
http://developer.mozilla.org/en/docs/DOM:window.setTimeout
o setInterval:
 
http://developer.mozilla.org/en/docs/DOM:window.setInterval
(in tal caso dove c'č il return dovrai cancellare:
 
http://developer.mozilla.org/en/docs/DOM:window.clearInterval
)
-- 
"e mai che mi sia venuto in mente
 di essere piů ubriaco di voi
 di essere molto piů ubriaco di voi"
									  F.D.A.

ecco alla fine come ha fatto , e funziona benissimo
var Flag2=0,Chiamata;
function apri_porte() {
div1 = 
(document.getElementById)?document.all["porta1"]:document.getElementById("porta1");
div2 = 
(document.getElementById)?document.all["porta2"]:document.getElementById("porta2");
if (Flag2==65) {
clearTimeout(Chiamata);
return;
Flag2=0;
}
Flag2++;
	div1.style.left=(390-Flag2);
	div2.style.left=(455+Flag2);
Chiamata = setTimeout('apri_porte()',20);
}
se pero inverto qeste due righe
div1 = 
(document.getElementById)?document.all["porta1"]:document.getElementById("porta1");
div2 = 
(document.getElementById)?document.all["porta2"]:document.getElementById("porta2");
non funziona

 ["porta2"]:document.getElementById("porta2");
...visto che non hai corretto queste, come ti aveva giustamente
suggerito Cristiano.
-- 
Nando

Nando ha scritto:

hemm le ho provate su firefox 2.0.0.8 e opera 9.24 visto che uso linux
su IE non so

 su IE non so
avevo letto che firefox aveva "aggiunto" il supporto a document.all, ma
quello che hai scritto è comunque errato e va corretto, altrimenti p.e. con
vecchie versioni di firefox non funzionerà.
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 avevo letto che firefox aveva "aggiunto" il supporto a document.all
Ah, ecco, queso mi mancava...
-- 
Nando

 Ah, ecco, queso mi mancava...
eggià
 
http://www.mozilla.org/docs/web-developer/faq.html#dom
"There is partial undetectable support for document.all, though, in newer
versions of Mozilla. However, that functionality only exists for
compatibility with sites authored specifically for IE. You should not rely
on Mozilla’s document.all support on new pages"
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.