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

    Slideshow infinito con estrazione random dell'elemento da un array

    Forum HTML.IT salve,
    un problema in ambiente html-javascript-css.

    La home page deve mostrare delle fotografie, in un loop infinito, ciascuna n secondi sullo schermo, prelevandole da un array di 15 elementi.
    Attualmente il meccanismo funziona correttamente evidenziando le fotografie nella sequenza dell'array.
    Vorrei invece che la fotografia di volta in volta evidenziata in home page venisse estratta in modo random dall'array (possibili ripetizioni della fotografia mostrata sono ammissibili).
    Penso vada usata la funzione math.random (e math.round) ma le mie prove finora non hanno funzionato.
    Suggerimenti?
    Grazie e cordiali saluti.

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Questo esempio dove ho usato jquery si basa sul background ma puoi benissimo applicarlo ad una slideshow

    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Grazie, non sono esperto per cui ti chiedo come e' il codice relativo?

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Il codice lo trovi nel sorgente pagina, e non ci voglio esperti ma un minimo di conoscenza per riadattarlo alle tue esigenze, se anche queste mancano ma.... non so che dirti prova postando il link al sito per verificare la complessità della pagina e quantificare le relative modifiche da apportare.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Grazie, provero'.
    Ma non ci sono altri metodi, oltre questo jquery?

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Certo trovi anche in javascript cerca su google

    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Salve, ho visto il codice dell'esempio jquery ma ho trovato difficolta, tanto più che lo slideshow di cui parlo deve svolgersi in un div css.
    Il codice che attualmente funziona, ma solo nella sequenza dell'array, e' il seguente:


    ...
    ...
    <script type="text/javascript"> <!--
    var ruotaimgs=new Array()
    function photoruota(){
    for (i=0;i<photoruota.arguments.length;i++){
    ruotaimgs[i]=new Image()
    ruotaimgs[i].src=photoruota.arguments[i]
    } }//-->
    </script>
    ...
    ...
    <div id="parte2">
    <img src="img01.jpg" name="wimg">
    <script> <!--
    photoruota("img01.jpg","img02.jpg","img03.jpg","im g04.jpg","img05.jpg","img06.jpg");
    var freq=8000;
    var cntimg=0;
    function muovi(){
    if (!document.images)
    return;
    document.images.wimg.src=ruotaimgs[cntimg].src;
    window.status = cntimg+1;
    if (cntimg<ruotaimgs.length-1)
    cntimg++
    else
    cntimg=0;
    setTimeout("muovi()",freq);
    }
    muovi();//-->
    </script>
    </div>
    ...
    ...

    Io vorrei restare in questo ambito più semplice e che riesco a controllare come conoscenza tecnica, ma solo estraendo random e non in sequenza.
    Grazie.

  8. #8
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, solitamente si va a "randomizzare" l'array di partenza in modo da ottenere una serie casuale ma completa, cioè evitare possibili ripetizioni durante la riproduzione dello slideshow (che altrimenti sarebbe poco funzionale).

    Tu però hai indicato che questa non è una tua esigenza:
    (possibili ripetizioni della fotografia mostrata sono ammissibili)
    In tal caso ti basterà usare le funzioni floor e random, più o meno come avevi supposto.
    codice:
    cntimg = Math.floor(Math.random()*ruotaimgs.length);
    document.images.wimg.src=ruotaimgs[cntimg].src;
    Chiaramente le parti di script chè incrementano il contatore non ti serviranno più.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  9. #9
    Grazie, provo questa indicazione e vi faccio sapere. Saluti.

  10. #10
    Salve, di certo per mia incompetenza non sono riuscito ad usare il precedente suggerimento, e rivedendo su w3schools.com alcuni concetti javascript ho preferito quest'altra soluzione, che mi e' parsa piu' lineare e semplice.
    Ma non funziona.
    Cioe funziona solo una volta, mi spiego:
    quando la home page arriva sullo schermo ci arriva gia con una foto, estratta random dall'array, come giustamente deve essere, e sarebbe l'esecuzione dello statement photo() iniziale nel div parte2, ma poi non parte dopo i secondi specificati nel setinterval lo statement photo() che, a mio parere, dovrebbe innescare il loop continuo.
    Dove e' l'errore?

    codice usato:

    ...
    <script type="text/javascript" language="javascript"> <!--
    function photo() {
    var kimg = new Array("img01.jpg","img02.jpg","img03.jpg","img04.j pg","img05.jpg","img06.jpg");
    var nkimg=kimg.length
    var xkimg=Math.round(Math.random()*(nkimg-1));
    wkimg = kimg[xkimg];
    document.write('<img src="'+wkimg+'">');
    } //-->
    </script>...
    ...
    <div id="parte2">
    <script language="javascript"> photo(); </script>
    <script> <!--
    var freq=3000;
    setInterval(photo(),freq);}
    //-->
    </script>
    </div>

Tag per questa discussione

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.