Ciao a tutti,
ho aggiunto ad un'applicazione una dockbar in stile Mac OS X (http://safalra.com/web-design/javascript/mac-style-dock/).
Nell'esempio ogni immagine è passata al js che crea la dockbar con parametri fissi mentre a me interessava rendere il tutto dinamico. Quindi ho creato una funzione che crea ogni immagine in questo modo:
Il ciclo in grassetto crea dinamicamente gli elementi contenenti i parametri di ogni immagine.
Le immagini vengono create correttamente ad eccezione dell'evento onclick che come indice 'id' prende sempre il massimo del ciclo.
Mi spiego, nel caso specifico carico 4 immagini per cui il ciclo valorizza 'id' da 0 a 3 ed esce su 'id==4'.
Nel push 'names[id]' e 'ext[id]' sono corretti ma 'links[id]' si comporta come se fosse sempre 'links[4]', di conseguenza il link che viene creato punta ad 'undefined' invece che al nome della pagina.
Mettendo un 'alert(id)' appena prima o dopo il 'push' vedo che i valori sono corretti.
Come posso ovviare a questo problema?
Grazie a tutti in anticipo.
ho aggiunto ad un'applicazione una dockbar in stile Mac OS X (http://safalra.com/web-design/javascript/mac-style-dock/).
Nell'esempio ogni immagine è passata al js che crea la dockbar con parametri fissi mentre a me interessava rendere il tutto dinamico. Quindi ho creato una funzione che crea ogni immagine in questo modo:
Codice:
<script type="text/javascript" >
var dock = new docklet(document.getElementById('dockBar'),createDockParameters('{APP_NAMES}','{APP_EXTENSIONS}','{APP_LINKS}'),80,160,2);
</script>
function createDockParameters(strNames, strExt, strLinks){
names=new Array();
ext=new Array();
links=new Array();
values=new Array();
names=strNames.split(',');
ext=strExt.split(',');
links=strLinks.split(',');
[B] [SIZE="3"]for(var id=0;id<names.length;id++){
values.push(
{
name: names[id],
extension: ext[id],
sizes: [80, 160],
onclick: function(){
location.href=links[id];
}
}
);
}[/SIZE][/B]
return values;
}
Il ciclo in grassetto crea dinamicamente gli elementi contenenti i parametri di ogni immagine.
Le immagini vengono create correttamente ad eccezione dell'evento onclick che come indice 'id' prende sempre il massimo del ciclo.
Mi spiego, nel caso specifico carico 4 immagini per cui il ciclo valorizza 'id' da 0 a 3 ed esce su 'id==4'.
Nel push 'names[id]' e 'ext[id]' sono corretti ma 'links[id]' si comporta come se fosse sempre 'links[4]', di conseguenza il link che viene creato punta ad 'undefined' invece che al nome della pagina.
Mettendo un 'alert(id)' appena prima o dopo il 'push' vedo che i valori sono corretti.
Come posso ovviare a questo problema?
Grazie a tutti in anticipo.