Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Scorrere frame in automatico con menu'

    Io ho una pagina composta da tre frame: TOP, SX e DX. Nel frame DX vengono visualizzate dieci pagine ad intervalli di 30 secondi che rappresentano un percorso attraverso l'utilizzo del seguente codice (messo nel frame SX):

    codice:
    var pos=0;
    var pagine = new Array('pag01.htm','pag02.htm','pag03.htm','pag04.htm','pag05.htm','pag06.htm','pag07.htm','pag08.htm','pag09.htm','pag10.htm')
    
    function cambia() 
    {
      if (pos < pagine.length) 
      {
        parent.DX.location.href=pagine[pos];
        pos ++;
        setTimeout('cambia()',30000);
      }
    }
    Questo percorso può essere suddiviso in tre sottopercorsi e clickando su appositi pulsanti è possibile scegliere da quale di questi partire nella visione.
    Per eseguire questa operazione avevo pensato di associare al pulsante uno una function setPercorsoUno, al due una setPercorsoDue... del tipo:

    codice:
    function setPercorsoUno()
    {
      pagine = new Array('pag01.htm','pag02.htm','pag03.htm','pag04.htm','pag05.htm','pag06.htm','pag07.htm','pag08.htm','pag09.htm','pag10.htm')
      pos = 0
      cambia()
    }
    
    function setPercosoDue()
    {
      pagine = new Array('pag04.htm','pag05.htm','pag06.htm','pag07.htm','pag08.htm','pag09.htm','pag10.htm')
      pos = 0
      cambia()
    }
    
    ...
    In questo modo le pagine scorrono correttamente, peccato che non rispettino più la pausa di 30 secondi l'una dall'altra! Perché?

    Grazie a tutti!!!
    Secondo alcuni autorevoli testi di tecnica di aeronautica, il calabrone non può volare, a causa della forma e del peso del proprio corpo in rapporto alla superficie alare.
    Ma il calabrone non lo sa e perciò continua a volare. (Igor Sikorsky)

    Chi beve solo acqua ha un segreto da nascondere (Charles Baudelaire)

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non ho visto errori nel JS, per cui sospetto qualche altro problema.

    Cmunque non serve ridefinire la matrice, ti basta settare la variabile pos:
    codice:
    function setPercosoDue()
    {
      pos = 4
      cambia()
    }
    Addirittura potresti eliminare la funzione, e scrivere:
    percorso 2

    Nota che il nome del frame "TOP" potrebbe andare in conflitto con il nome top (il frame piu` esterno nella finestra) in qualche browser che non rispetta la norma del case-sensitive, per cui ti consiglio di cambiarlo.


    Mi viene un dubbio:
    Quando clicchi sul bottone (o link) del percorso 2, hai gia` un timeout che scorre?
    In tal caso attivi un nuovo timeout, per cui i timeout diventano due, che si intersecano.

    Per evitare tale problema, devi definire una variabile globale, che usi come riferimento del timer:

    var pos=0;
    var pagine = new Array('pag01.htm'.....)
    var timer;
    ....
    timer = setTimeout(...);

    In tal caso il timer e` sempre lo stesso, e viene ridefinito ad ogni chiamata.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Penso di sbagliare il modo in cui setto il timeOut...
    Quando la dovrei resettare? Dove?
    Adesso lo faccio prima di ogni chiamata a cambia, ma continu a non andare...

    Mi sento un po' stupida in questo momento : )

    Grazie per la risposta!
    Secondo alcuni autorevoli testi di tecnica di aeronautica, il calabrone non può volare, a causa della forma e del peso del proprio corpo in rapporto alla superficie alare.
    Ma il calabrone non lo sa e perciò continua a volare. (Igor Sikorsky)

    Chi beve solo acqua ha un segreto da nascondere (Charles Baudelaire)

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Il timeout puo` essere salvato in una variabile, oppure no.
    Se viene salvato, puoi resettarlo oppure rinominarlo, altrimenti no.

    Nel tuo script usi il timeout senza salvarlo, per cui non hai modo di fermarlo.
    Per poterci lavorare devi usarlo con varibile=setTimeout(...) SEMPRE nel tuo script.

    Per fermare il timeout devi dare il comando:
    clearTimeout(variabile);
    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.