PDA

View Full Version : [JavaScript] Gallerie fotografiche in due celle di una tabella


fbcyborg
11-07-2007, 10:53
Salve a tutti,
Sto cercando di inserire 2 gallerie fotografiche in una tabella 2x2.
Nella prima riga ci sono i titoli "Galleria1", "Galleria2", mentre nella seconda riga ci sono le immagini vere e proprie che scorrono.

Per fare ciò mi sono servito di uno script che ho trovato su html.it e l'ho riadattato alle mie esigenze.

Fino a che si tratta di inserire una galleria nella prima cella tutto Ok. Quando vado a reinserire lo script, opportunamente modificato, nella seconda cella, ho dei problemi. Se clicco su avanti in uno dei due mi cambia l'immagine nel posto sbagliato e con l'immagine sbagliata.

Onde evitare problemi ho anche cambiato nome alle variabili ma credo che il problema sia in "src" dell'immagine.

Lo script che uso è:
<SCRIPT LANGUAGE="Javascript"><!--

var immagini = new Array ("image1.jpg",
"image2.jpg",
"image3.jpg",
"image4.jpg");
var pictureNumber = 0;
var totalNumber = immagini.length;

function previous(){
if (document.images){
if (pictureNumber > 0) pictureNumber--
else
pictureNumber = totalNumber-1
document.images.slides.src = immagini[pictureNumber]
}
}
function next(){
if (document.images){
if (pictureNumber < totalNumber-1) pictureNumber++
else
pictureNumber = 0
document.images.slides.src = immagini[pictureNumber]
}
}

//--></SCRIPT>


</head>
<body >
<div align="center">

<IMG SRC="image1.jpg" width="150" height="200" NAME="slides">
<br />
<A align="left" HREF="javascript:previous()">Indietro</A>
<A align="right" HREF="javascript:next()">Avanti</A>
</div>

C'è una soluzione a questo problema?

Avevo pensato anche a utilizzare un file javascript esterno ma non riesco a farlo funzionare se lo metto in un file .js .. forse sbaglio qualcosa nella scrittura di tale file.

misterx
11-07-2007, 11:09
hai provato a rinominare con slide1 e slide2 slidex ???

sempre se non ho capito male ?

fbcyborg
11-07-2007, 11:12
Ho provato adesso a mettere su ogni script, al posto di slides, slides1, slides2, slides3... Ma quando clicco su avanti o indietro non succede più nulla. (Mi pare sia solo lì che vada cambiato no?)

fbcyborg
11-07-2007, 11:16
Allora ho cambiato slides con slides1 in 3 posti solo che quando clicco avanti e/o indietro della prima galleria, mi cambia le immagini nella seconda cella!!!:
<SCRIPT LANGUAGE="Javascript"><!--

var immagini = new Array ("image1.jpg",
"image2.jpg",
"image3.jpg",
"image4.jpg");
var pictureNumber = 0;
var totalNumber = immagini.length;

function previous(){
if (document.images){
if (pictureNumber > 0) pictureNumber--
else
pictureNumber = totalNumber-1
document.images.slides1.src = immagini[pictureNumber]
}
}
function next(){
if (document.images){
if (pictureNumber < totalNumber-1) pictureNumber++
else
pictureNumber = 0
document.images.slides1.src = immagini[pictureNumber]
}
}

//--></SCRIPT>


</head>
<body >
<div align="center">

<IMG SRC="image1.jpg" width="150" height="200" NAME="slides1">
<br />
<A align="left" HREF="javascript:previous()">Indietro</A>
<A align="right" HREF="javascript:next()">Avanti</A>
</div>

EDIT: OK risolto, era un problema con le funzioni next() e previous().. andavano rinominate anche loro. Grazie.

misterx
11-07-2007, 11:18
uhm....si potrebbe risolvere cun un parametro senza dover duplicare 'n' volte lo script tipo:

javascript:previous('slides1')
javascript:previous('slides2')

etc....

fbcyborg
11-07-2007, 11:21
uhm....si potrebbe risolvere cun un parametro senza dover duplicare 'n' volte lo script tipo:

javascript:previous('slides1')
javascript:previous('slides2')

etc....

Ottima idea.. Però sono veramente a digiuno di javascript, l'ho cominciato a vedere da oggi... Alla fine non sono tanti per fortuna.

Per caso sai come fare per non fare in modo che ricominci dalla prima immagine dopo aver cliccato su avanti quando suono sull'ultima foto e viceversa?

fbcyborg
11-07-2007, 11:30
OK, ho risolto togliendo il blocco
else
pictureNumber = 0

e

else
pictureNumber = totalNumber-1

Per l'ottimizzazione con una sola funzione accetto consigli!

Grazie

fbcyborg
11-07-2007, 12:07
Scusate ho ancora un problema con questo script:
<script language="Javascript">
<!--
var settecento = new Array ("images/Prodotti/settecento/pav1.jpg",
"images/Prodotti/settecento/pav2.jpg",
"images/Prodotti/settecento/pav3.jpg",
"images/Prodotti/settecento/pav4.jpg",
"images/Prodotti/settecento/pav5.jpg",
"images/Prodotti/settecento/pav6.jpg",
"images/Prodotti/settecento/pav7.jpg",
"images/Prodotti/settecento/pav8.jpg",
"images/Prodotti/settecento/pav9.jpg",
"images/Prodotti/settecento/pav10.jpg",
"images/Prodotti/settecento/pav11.jpg",
"images/Prodotti/settecento/pav12.jpg",
"images/Prodotti/settecento/pav13.jpg",
"images/Prodotti/settecento/pav14.jpg",
"images/Prodotti/settecento/pav15.jpg",
"images/Prodotti/settecento/pav16.jpg");
var pictureNumber = 0;
var totalNumber = settecento.length;
function previous1(){
if (document.images){
if (pictureNumber > 0) pictureNumber--
document.images.slides1.src = settecento[pictureNumber]
}
}
function next1(){
if (document.images){
if (pictureNumber < totalNumber-1) pictureNumber++
document.images.slides1.src = settecento[pictureNumber]
}
}
//--></script>
<div align="center">
<img src="http://localhost/joomla/images/Prodotti/settecento/pav1.jpg" name="slides1" height="200" width="150" />
<br />
<a href="javascript:previous1()" align="left">Indietro</a>
<a href="javascript:next1()" align="right">Avanti</a>
</div>
Le immagini sono 16, ma cliccando su avanti ora mi si ferma alla 4 immagine!!!

fbcyborg
11-07-2007, 16:12
Ho risolto poi, cambiando nome anche a tutte le altre variabili... non c'avevo proprio pensato.

Per favore, misterx, potresti dirmi come realizzare questa funzione senza dover scrivere lo script per ogni galleria?

Magari sarebbe utile fare uno script esterno richiamabile da tutto il sito.