Parametri Mac OS X Dockbar

codesurfer

Nuovo Utente
13 Feb 2008
16
3
0
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:
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.
 

Discussioni simili