Newsgroup: it.comp.lang.javascript
Titolo: Un aiuto di sintassi e (forse) anche di logica

Vorrei far ruotare 4 immagini cambiandole ogni 3 secondi, ma non riesco 
a capire perchï¿œ questo l'array Immagine nel primo listato funzione e nel 
secondo NO.
Un'altra cosa che non riesco a capire ï¿œ perchï¿œ nel listato che funziona, 
all'avvio (partendo da zero) la sequenza ï¿œ 0-2-3-0-1-2-3-0-1-2-3 ecc, 
cioï¿œ all'avvio la prima volta, e solo quella, salta il numero 2.
Trovo tutto incomprensibile (almeno per me) perchï¿œ gli array Titolo e 
Descrizione funzionano bene.
Grazie a chi mi potrï¿œ dare una mano
Leonardo
 
Listato 1
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="../../js/jquery-2.0.3.min.js"></script>
<title></title>
 
<script>
var I = 1;
 
Immagine = new Array()
Immagine[0] = 1;Immagine[1] = 2;Immagine[2] = 3; Immagine[3] = 4;
 
Titolo = new Array()
Titolo[0] = "Titolo 0";Titolo[1] = "Titolo 1";Titolo[2] = "Titolo 2"; 
Titolo[3] = "Titolo 3";
 
Descrizione = new Array()
Descrizione[0] = "Descrizione 0";Descrizione[1] = "Descrizione 
1";Descrizione[2] = "Descrizione 2"; Descrizione[3] = "Descrizione 3";
</script>
 
<script>
function CambiaImmagineTempo()
{
setInterval(function(){
I ++;
if(I>3){I = 0;}
 
$("#ImmaginePiccola").animate({height: "0px"},"slow", 
function(){$("#ImmaginePiccola").attr("src", I + ".jpg");});
$("#ImmaginePiccola").animate({height: "340px"},"slow");
 
$("#TxtPic").html(Titolo[I]+"<br>"+Descrizione[I]);
	},3000);
}
 
</script>
</head>
 
<body onload="CambiaImmagineTempo()">
 
<div id="ImmaPic">
<img id="ImmaginePiccola" src="0.jpg" width="280" height="340">
</div>
 
<div id="TxtPic">Titolo 0<br>Descrizione 0</div>
 
</body>
</html>
 
E QUESTO NO!-------------:
 
Listato 2
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 
<script src="../../js/jquery-2.0.3.min.js"></script>
 
<title></title>
 
<script>
var I = 1;
 
Immagine = new Array()
Immagine[0] = "1.jpg";Immagine[1] = "2.jpg";Immagine[2] = "3.jpg"; 
Immagine[3] = "4.jpg";
 
Titolo = new Array()
Titolo[0] = "Titolo 0";Titolo[1] = "Titolo 1";Titolo[2] = "Titolo 2"; 
Titolo[3] = "Titolo 3";
 
Descrizione = new Array()
Descrizione[0] = "Descrizione 0";Descrizione[1] = "Descrizione 
1";Descrizione[2] = "Descrizione 2"; Descrizione[3] = "Descrizione 3";
</script>
 
 
<script>
function CambiaImmagineTempo()
{
setInterval(function(){
I ++;  // alert("I = "+I);
if(I>3){I = 0;}
 
 
$("#ImmaginePiccola").animate({height: "0px"},"slow", 
function(){$("#ImmaginePiccola").attr("src", Immagine[I]);});
$("#ImmaginePiccola").animate({height: "340px"},"slow");
 
$("#TxtPic").html(Titolo[I]+"<br>"+Descrizione[I]);
	},3000);
}
</script>
</head>
<body onload="CambiaImmagineTempo()">
<div id="ImmaPic">
<img id="ImmaginePiccola" src="0.jpg" width="280" height="340">
</div>
<div id="TxtPic">Titolo 0<br>Descrizione 0</div>
</body>
</html>
 
 
 
-- 
Non sono su facebook
Se anche tu vuoi cancellarti
http://www.giardiniblog.com/come-cancellarsi-da-facebook-eliminare-account/
 

 $("#ImmaginePiccola").animate({height: "340px"},"slow");
 
Non conosco bene jquery, ma immagino che il terzo parametro sia la 
callback ... così come stai facendo è un macello, perché porti height=0 
*E AL TERMINE* assegni src; ma nel frattempo sarà partita anche 
l'animazione successiva ... immagino tu debba mettere la seconda 
animazione nella callback della prima


Ti ringrazio della risposta, per  I = 2 ho capito.
Per l'altro problema cerco di spiegarmi:
quando utilizzo:
$("#ImmaginePiccola").animate({height: "0px"},"slow", 
function(){$("#ImmaginePiccola").attr("src", I + ".jpg");});
dove I è un numero ma anche il nome dell'immagine (ad esempio 2.jpg) 
tutto funziona (l'immagina cambia).
Se invece utilizzo:
Immagine = new Array()
Immagine[0] = "1.jpg";
Immagine[1] = "2.jpg";
Immagine[2] = "3.jpg";
Immagine[3] = "4.jpg";
e faccio così, non mi funziona.
$("#ImmaginePiccola").animate({height: "0px"},"slow", 
function(){$("#ImmaginePiccola").attr("src", Immagine[I]);});
cioè non cambia l'immagine. Naturalmente ho controllato e I passa da 
zero e 3.
Grazie
Leonardo


 cioè non cambia l'immagine. 
 
Io non vedo problemi su quanto sopra, l'errore è probabilmente 
altrove ... non è che (la sparo) hai due oggetti con lo stesso id 
"ImmaginePiccola"?


No, ho controllato, deve essere qualcosa di sintassi particolare jquery.
farò una ricerca in rete.


 Il Sat, 14 Dec 2013 17:34:29 +0100, leonardo.1+++ ha scritto:
Ciao, dopo una ricerca in rete lo ho risolto così.
function(){$(this).attr("src", Immagine[I]);
Purtroppo però il valore di I su Immagine me lo da diverso (+1) che su 
Titolo o Descrizione.
Ci vedi come mai?
 
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="../../js/jquery-2.0.3.min.js"></script>
 
<title></title>
<script>
var I = 0;
Immagine = new Array()
Immagine[0] = "1.jpg";Immagine[1] = "2.jpg";Immagine[2] = "3.jpg"; 
Immagine[3] = "4.jpg";
 
Titolo = new Array()
Titolo[0] = "Titolo 0";Titolo[1] = "Titolo 1";Titolo[2] = "Titolo 2"; 
Titolo[3] = "Titolo 3";
 
Descrizione = new Array()
Descrizione[0] = "Descrizione 0";Descrizione[1] = "Descrizione 
1";Descrizione[2] = "Descrizione 2"; Descrizione[3] = "Descrizione 3";
</script>
 
<script>
function CambiaImmagineTempo()
{
setInterval(function(){
I ++; // alert("I = "+I);
if(I>3){I = 0;}
 
 
$("#ImmaginePiccola").animate({height: "0px"},"slow", 
function(){$(this).attr("src", Immagine[I]);});
$("#ImmaginePiccola").animate({height: "340px"},"slow");
$("#TxtPic").html(Titolo[I]+"<br>"+Descrizione[I]);
	},3000);
}
 
</script>
</head>
 
<body onload="CambiaImmagineTempo()">
 
<div id="ImmaPic">
<img id="ImmaginePiccola" src="0.jpg" width="280" height="340">
</div>
<div id="TxtPic">Titolo 0<br>Descrizione 0</div>
</body>
</html>
 
 


 Ci vedi come mai?
 
Perchè Immagine[0]="1.jpg" mentre gli altri indici parlano di Titolo 0 e 
Descrizione 0?