Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    21

    Cambia immagine dopo un minuto!!!

    Ciao a tutti, la domanda è ardua.

    Vorre che nella Home page mi venisse cambiata un'immagine di sfondo di una tabella ogni 1 2 minuti. Mi spiego meglio. L'home page viene caricata dopo un minuto inizia a caricare il nuovo sfondo per la tabella e lo aggiorno e cosi via, quindi scambiano l'immagine ogni minuto.

    Ciao grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    206
    <html>
    <head>
    <script type='text/javascript'><!--
    rotator = true;
    n = 0;
    theImages = "0.gif, 1.gif, 2.gif, 3.gif, 4.gif, 5.gif, 6.gif, 7.gif, 8.gif, 9.gif".split(", ");
    allImages = theImages.length;
    imgObjects = new Array();

    for (i in theImages){
    imgObjects[i] = new Image();
    imgObjects[i].src = theImages[i];
    }


    function rotate(direction){
    n++;
    if (n==allImages) n = 0;
    document.getElementById('c1').style.background = "url(" + imgObjects[n].src + ")";
    }

    function cellImg() {
    document.getElementById('c1').style.background = "url(img1.gif)";
    }

    window.setInterval(rotate, 2000);
    //--></script>
    </head>
    <body>
    <table id='c1' width="50%" height="50%" border="1">
    <tr>
    <td></td>
    <td></td>
    </tr>
    </table>
    </body>
    </html>
    </html>

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    21
    Ti ringrazio tantissimo, funziona tutto perfettamente.

    Per perfezionarlo però avrei bisogno di due cose:

    - il tempo che deve trascorrere nel mio caso è di un minuto allungando i tempi mi si pone il problema che all'inizio la tabella mi rimane un minuto con sfondo bianco, è possibile farci apparire lo sfondo appena caricato?

    - questa è un po + difficile: la tabella in questione è inserita in un home page di per se gia pesante in termini di kb, qundi capite che appesantirei molto la pagina mettendo invece di una 10 immagini di sfondo alla tabella.
    L'ideale sarebbe che venisse caricata immediatamente la prima immagine di sfondo e dopo essempio 30 secondi (il tempo di caricare il resto della pagina) inizzi a caricare le successive 9.

    Questa non è semplice

    Ciao e grazie ancora

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    206
    per la prima, metti in cima al javascript o fuori dalle funzioni questa riga di codice:
    codice:
    document.getElementById('c1').style.background = "url(immagine.gif)";
    oppure metti l'immagine di sfondo direttamente nel tag <table>

    -la seconda non l'ho capita bene, vorresti ritardare il caricamento delle altre 9 immagini e fare il preload solo della prima se è così prova a modificare il codice così:
    codice:
    rotator = true; 
    n = 0; 
    theImages = "0.gif, 1.gif, 2.gif, 3.gif, 4.gif, 5.gif, 6.gif, 7.gif, 8.gif, 9.gif".split(", "); 
    allImages  = theImages.length; 
    imgObjects = new Array(); 
    
    imgObjects[0] = new Image(); 
    imgObjects[0].src = theImages[0]; 
    
    function load(){
      for (i in theImages){ 
        imgObjects[i] = new Image(); 
        imgObjects[i].src = theImages[i]; 
      } 
    }
    window.setTimeout(load, 30000) //30 secondi
    
    function rotate(direction){ 
    n++; 
    if (n==allImages) n = 0; 
    document.getElementById('c1').style.background = "url(" + imgObjects[n].src + ")"; 
    } 
    
    window.setInterval(rotate, 60000); //60 secondi

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    21
    Nico sei un grande!!! Funziona.

    E' pressochè perfetto, ho messo l'immagine da caricare subito nel TAG table (e quindi appare appena caricata), poi mi carica subito la prima immagine (0.gif) e poi dopo 30 sec. le altre 9.

    Avevo provato a inserire la stringa
    document.getElementById('c1').style.background = "url(immagine.gif)";
    per visualizzare il primo sfondo (0.gif) appena caricato ma non sono riuscito allora ho risolto mettendo lo sfondo alla tabella direttamente dal TAG table.

    Senti visto che l'immagine che volevo caricare immediatamente la metto nel TAG table non ho più bisogno che sia caricata all'esecuzione della script ma possono essere caricate tutte e 10 dopo 30 secondi, se è possibile fare anche questa modifica

    Ti ringrazio infinitamete.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    206
    basta togliere solamente le righe:
    codice:
    imgObjects[0] = new Image(); 
    imgObjects[0].src = theImages[0];
    poi la load() le carica ugualmente tutte 10

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    21
    Ora è veramente perfetto!!!

    Non so come ringraziarti

    Spero di potermi sdebitare, ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    206
    di nulla, è stato un piacere aiutarti!!!

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.