Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Menu navigazione javascript

    Ho un elenco di links generato con un array del tipo:
    var pageLink = new Array();
    pageLink[0] = "./content/01.htm";
    pageLink[1] = "./content/02.htm";
    pageLink[2] = "./content/03.htm";
    pageLink[3] = "./content/04.htm";
    pageLink[4] = "./content/05.htm";
    pageLink[5] = "./content/06.htm";

    Visto che si tratta di presentare delle pagine in sequenza, vorrei dare agli utenti la possibilità di navigarle anche avanti e indietro, oltre che scegliegliendo un link specifico dall'elenco generato dall'array. E' possibile? (tenete presente che di js sono piuttosto nuovo...)

    Ciao!

  2. #2
    Pensavo a una cosa del genere:

    function avanti(){
    location.href=pageLink++;}

    credevo che avrebbe richiamato dall'array il valore successivo all'ultimo selezionato, ma non funziona...come posso fare ad ottenere questa funzione?

  3. #3
    Utente di HTML.it L'avatar di Neocron
    Registrato dal
    Jul 2002
    Messaggi
    524
    non saprei, mi spiace

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Devi avere una variabile globale in cui tenere l'indice:
    codice:
    <script type="text/javascript">
    var pageLink = new Array();
    pageLink[0] = "./content/01.htm";
    pageLink[1] = "./content/02.htm";
    pageLink[2] = "./content/03.htm";
    pageLink[3] = "./content/04.htm";
    pageLink[4] = "./content/05.htm";
    pageLink[5] = "./content/06.htm";
    
    var indice = 0;
    
    function avanti() {
      parent.NOMEFRAME.location.href = pageLink[indice];
      indice++;
    }
    </script>
    Nota: devi avere lo script e la matrice in un frame diverso, altrimenti viene cancellato ogni volta (ecco perche` ho usato parent.NOMEFRAME davanti a location.href).
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Ho creato un frameset e messo solo la parte dello script con indice e funzione nell'header di un frame, richiamando la funzione con avanti, lasciando la matrice nell'altro (che ho chiamato "content"), ma non funziona. Ho sbagliato qualcosa?

    Altra domanda: può funzionare anche con gli iframe?

    Intanto grazie!

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Con gli iframe puo` funzionare in teoria, ma l'iframe e` legato alla pagina che l'ha creato: eliminata la pag sparisce anche l'iframe.

    Non ho capito la struttura del tuo frameset.

    Hai due frame, in uno ci hai messo lo script nella head; spero che ci sia un body (al limite con un contenuto formato solo dal carattere &amp;nbsp, altrimenti il frame potrebbe non venir caricato.

    nell'altro frame (chiamato "content") c'e` il bottone "avanti".
    Tale bottone deve essere di questo tipo:
    avanti
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    Il bottone e lo script li ho messi nella stessa pagina in un frame "bottom", mentre nel frame "content" ho caricato le pagine con la matrice.

    Graficamente la struttura della pagina dovrebbe essere + o - quella in allegato: pensavo di gestire le pagine di contenuto in un iframe (o in un frame) per caricare la pagina con i link una volta sola, ma dal tuo messaggio avevo capito che array e funzione dovessero stare in due frames diversi...forse ho capito male: intendevi dire che script e matrice devono stare in un frame diverso da quello in cui si carica la pagina?

    Lo script è richiamato da un js esterno, può essere un problema?

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Avevo in mente una struttura diversa.

    Allora il bottone sta nello stesso frame dello script.

    1. Lo script, la matrice e la variabile devono stare in uno stesso frame.

    2 Il bottone puo` stare in un frame diverso, chiamandolo come avevo scritto sopra; se sta nello stesso frame dello script, va bene come lo chiamavi tu:
    avanti

    3. se la struttura e` quella, allora ci deve essere un limite (sia verso l'alto che verso il basso). Lo script diventa:
    codice:
    <script type="text/javascript">
    var pageLink = new Array();
    pageLink[0] = "./content/01.htm";
    pageLink[1] = "./content/02.htm";
    pageLink[2] = "./content/03.htm";
    pageLink[3] = "./content/04.htm";
    pageLink[4] = "./content/05.htm";
    pageLink[5] = "./content/06.htm";
    
    var indice = 0;
    
    function avanti(n) {
      indice += n;
      if(indice < 0) indice = 0;
      if(indice >= pageLink.length) indice = pageLink.length-1;
    
      alert(pageLink[indice]); // da togliere o commentare
      parent.NOMEFRAME.location.href = pageLink[indice];
    }
    </script>
    I due bottoni diventano:
    avanti
    indietro

    Nota: la pagina che contiene il codice e lo script deve stare nella cartella che contiene la cartella /content/
    (questo indipendentemente dalla struttura dei frame).

    Per provare le path metti nella pagina dove stanno i bottoni un link di questo tipo:
    prova
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  9. #9
    Ok, grazie! Per il limite superiore però al posto di pageLink.length userò una variabile definita a parte (il numero di pagine da sfogliare).

    Si può fare in modo che lo script "ricordi" l'ultimo link cliccato? Ora se clicco ad esempio su "pagina 3" dall'elenco dei link e poi sulla funzione avanti, quest'ultima riparte da zero.

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Si puo`.

    Basta che quando clicchi sul link vai anche a modificare la variabile inidce.

    Supponendo che i link siano in un altro frame, puoi scrivere:

    <a href=".../03.htm" target="content" onclick="parent.NOMEFRAME.document.indice = 3;">
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.