Ciao a tutti,
ho aggiunto ad un'applicazione una dockbar in stile Mac OS X (http://safalra.com/web-design/javasc...ac-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.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(','); 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]; } } ); } return values; }
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.

Rispondi quotando