Newsgroup: it.comp.lang.javascript
Titolo: Sciocchezza con immagini random

Ciao a tutti, mi sono bloccato su una sciocchezza circa la funzione
random applicata alle immagini. Mi spiego meglio. Ho un script per far
ruotare un banner:
<SCRIPT LANGUAGE="JavaScript">
var i1=1;
var aa = new Array();
aa[0] = new Image();
aa[0].src = "img/banner/2.jpg";
aa[1] = new Image();
aa[1].src = "img/banner/3.jpg";
aa[2] = new Image();
aa[2].src = "img/banner/1.jpg";
var i = 0;
function mov()
   {
    if (i > 2)
	   i=0;
    document.getElementById('imgBanner').src = aa[i].src;
    i++;
    setTimeout("mov()",4000);
   }
setTimeout("mov()",4000);
</SCRIPT>
e nella pagina ho:
<IMG SRC="img/banner/1.jpg" WIDTH="120" HEIGHT="142" id="imgBanner">
il mio problema è che non vorrei definire con quale immagine iniziare,
ma vorrei che fosse presa random fra quelle definite nell'array. dopo
però dovrebbero proseguire in ordine. Cioè, se la funzione mi
visualizza al caricamento l'immagine 2.jpg, la sequenza dovrebbe essere
2.jpg(al cariamento) - 3.jpg - 1.jpg - 2.jpg - e così via...
Sarò riuscito a spiegarmi?
Grazie
Stefano

 ma vorrei che fosse presa random fra quelle definite nell'array. 
Estrazione numero random tra 0 e 1:
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Math:random
Moltiplicando per arr.length-1 avrai il tuo numero, che dovrai convertire
in intero:
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Math:floor
Cosě avrai il tuo valore iniziale di i.
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

 Così avrai il tuo valore iniziale di i.


  i=(++i)%arr.length;
ma fare i+1 invece che ++i era brutto? :D
(seriamente, ma i=++i, come i=i++ non e' indefinito?)
-- 
Under construction

 (seriamente, ma i=++i, come i=i++ non e' indefinito?)
boh, mai provato i=i++ ... ma dentro le espressioni lo uso abitualmente
quindi dovrebbe andare.
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

     i++;
come vedi nella function PRIMA assegni e POI aumenti i ... percui ti
visualizza la stessa prima immagine 2 volte.
Quindi puoi:
a) quando carichi all'inizio l'immagine fai subito un i++;
b) nella function potresti fare prima il ++
-- 
"Non sai che ci vuol scienza
 ci vuol costanza
 ad invecchiare senza maturità"
									    F.G.

 In data 2 Oct 2006 06:16:07 -0700, Stef ha scritto:


 
Premessa ... non ricordo questo particolare in javascript ma se č come
C, i=++i oppure i=i++ provoca solo un inutile assegnamento.
Infatti i=i++ assegna ad i il valore di i poi lo aumenta ma assegnare ad
i il valore di i č inutile.
i=++i aumenta i poi assegna ad i il valore di i (inutile).
Fai una singola istruzione i++ oppure ++i se devi aumentare i ... se non
usi un assegnamento sono la stessa cosa ...
Le forme ++i e i++ esistono entrambe perchč in un assegnamento sensato
danno effetti diversi:
- i=0; a=i++ produce a=0, i=1.
- i=0; a=++i produce a=1, i=1.
Di solito uso la forma i++ come istruzione singola perchč secondo me
usarla in altri contesti rende il codice meno leggibile:
Esempio:
while (i<LIMIT)
Begin
	...
	read(array[i]);
	i++;
	...
End
E' secondo me piů immediata di
while (i<LIMIT)
Begin
	...
	read(array[i++]);
	...
End
che č totalmente equivalente come risultato
<<<MirO>>>

 (seriamente, ma i=++i, come i=i++ non e' indefinito?)
Perché mai indefinito? Nel codice c'è un bel "var i = 0" dichiarato
precedentemente. Ovviamente un'istruzione come i=++i da sé non ha senso (men
che meno i=i++), ne ha all'interno di un'operazione tipo quella del thread.
-- 
~ "Accadono cose che sono come domande.
Passa un minuto, oppure anni e poi la vita risponde."
(A. Baricco)

 C, i=++i oppure i=i++ provoca solo un inutile assegnamento.
Si, č esattamente come C. Infatti le due istruzioni prese a sé stanti sono
del tutto inutili. Diverso č ovviamente se le si utilizza all'interno di uno
statement di questo tipo:
	i=(++i)%arr.length;
-- 
~ "Non sono solitamente un uomo che prega,
ma se sei lassů, per favore salvami, Superman." (Homer Simpsons)