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

    Problema codice "random images"

    Ciao ragazzi, innanzitutto mi presento.
    Sono Alessandro da Roma e sto studiando grafica.
    Tra i vari corsi cè anche Web Design, per il quale dobbiamo portare un sito personale.
    Ora, avevo voglia di inserire nella home, tre immagini che venissero caricate random.
    (Tutte all'interno di 3 div differenti)

    Ho trovato sul web un codice javascript che ho inserito e "modificato" per il mio comodo ed è questo:


    codice:
    </head>
    <body>
    
    <script language="Javascript">
    <!--
    function image() {
    };
    
    image = new image();
    number = 9;
    // imageArray
    
    image[number++] = "[img]images/random/1phuel.jpg[/img]"
    image[number++] = "[img]images/random/4underworld2.jpg[/img]"
    image[number++] = "[img]images/random/3.jpg[/img]"
    image[number++] = "[img]images/random/5.jpg[/img]"
    image[number++] = "[img]images/random/6.jpg[/img]"
    image[number++] = "[img]images/random/s.jpg[/img]"
    image[number++] = "[img]images/random/d.jpg[/img]"
    image[number++] = "[img]images/random/8lairimar.jpg[/img]"
    image[number++] = "[img]images/random/6black-market-screens.jpg[/img]"
    
    
    increment = Math.floor(Math.random() * number);
    //-->
    </script>
    mentre, all'interno dei vari div ho messo questo:

    codice:
    <div class="random1">      	
     <script language="JavaScript"> 			document.write(image[increment]); 	  	 
    </script>      
     </div>
    per differenziare le 3 immagini (sennò me le dava random, ma le stesse contemporaneamente) ho aggiunto un "+01" e "+02" accanto a "increment" nel secondo codice.
    questa è stata un'improvvisazione totale senza saper nè leggere nè scrivere, però....ha funzionato!

    il problema è un altro: ogni tot immagini mi appare il div vuoto con la scritta "undefined", e cosa ancor più fastidiosa che al primo avvio della pagina quasi sempre sono tutti e 3 vuoti con "undefined", poi aggiornando si può vedere che le immagini ci sono e le pesca random....

    potreste aiutarmi?
    premetto che sono veramente un principiante, anzi mi scuso se ho sbagliato qualcosa nel compilare questo messaggio anche!

  2. #2
    piccolo aggiornamento: smanettando ho modificato il [number++] del codice da mettere nel body in [01],[02] etc..
    sembra essere migliorato, nel senso che "undefined" appare solo 1 volta a "botta" e molto più raramente, però appare comunque....ho provato anche [1] etc ma niente...

  3. #3
    Anche se son sicuro che non sia la soluzione migliore, prova così:

    Codice PHP:
    <html>
    <
    head>
    <
    script language="Javascript">
    <!--
    // url delle immagini disponibili.
    var images = new Array(
                        
    'url1',
                        
    'url2',
                        
    'url3',
                        
    'url4',
                        
    'url5'
                  
    );

    // array che conterrà indici casuali.
    //In questo caso avrà lunghezza 3 (n° di immagini da visualizzare).
    var indexes = new Array(3);

    // funzione che estrae un indice random tra gli indici dell'array di immagini
    function getRandomIndex(myIndex) {
        var 
    value Math.floor(Math.random() * images.length);
            
    // se ti interessa visualizzare immagini differenti (almeno nel caso in cui
            // la cardinalità di indexes sia minore o uguale di quella di images), lascia questo ciclo.
            // altrimenti puoi eliminarlo/commentarlo
        
    if (images.length>myIndex) {
            for (
    k=0;k<myIndex;k++) {
                if (
    indexes[k] == value) {
                    return 
    getRandomIndex(myIndex);
                 }
            }
        }
        return 
    value;
    }
    //-->
    </script>

    </head>

    <body>
        <div>
            <script language="javascript" type="text/javascript">
            <!--
                for (i=0; i<indexes.length; i++) {
                    indexes[i] = getRandomIndex(i);
                    document.write('\n[img]' + images[indexes[i]] + '[/img]');
                }
            //-->
            </script>
        </div>
    </body>
    </html> 
    Personalmente non amo molto gli script all'interno del body, tantomeno all'interno di qualche div, ma dovrebbe funzionare...

    Non è sicuramente la miglior soluzione perché man mano che estraggo degli indici random, la funzione potrebbe andare a ripescarli per un numero indeterminato di volte, prima di trovarne uno "libero".
    Naturalmente i problemi sono enfatizzati nel caso in cui il numero degli elementi di indexes sarà minore ma vicino (o uguale, o maggiore) a quella di images.

    Ora sono di fretta, magari più tardi proverò ad ottimizzare la scelta degli indici in qualche altro modo.

    Ciao!
    Michele
    King Of The Kill

  4. #4
    grazie mille Michele!
    purtroppo non sono per niente esperto ora come ora di programmazione (tecnicamente sarei un graphic designer ;D) e ora come ora non è più un "emergenza"
    In ogni caso dovrei utilizzare un altro tipo di codice, in parole povere, senza che ti scervelli!
    grazie ancora!

  5. #5
    Ehm... non ho capito cosa intendi con "un altro tipo di codice"
    Cosa dovresti fare di preciso?
    Michele
    King Of The Kill

  6. #6
    nel senso da quel che vedo il codice che mi hai passato tu non è semplicemente quello che ho usato io con 1-2 modifiche, è proprio strutturato in maniera differente (è PHP credo? non l'ho mai fatto), o mi sbaglio?
    Io sono proprio livello base base base base più base non si può,solo riuscire a inserire il Lightbox è stata una soddisfazione pari al "sì" di una donna.
    Principalmente volevo capire perchè mi dava quell'errore, proprio per riuscire a capire un pò la logica di quel javascript, se avevo sbagliato io o cosa (proprio per imparare).
    Per il resto dovevo fare un sito personale da portare come esame a un corso di web design base, ma già solo l'idea di mettere un javascript era per il professore degna di lode visto il livello standard...ora l'esame è andato, quindi tecnicamente "non mi serve più", anche se certo avrei voluto capire cosa sbagliavo!

  7. #7
    Ok, allora ripartiamo dall'inizio...
    riprendo il tuo codice di partenza ed in rosso metto i miei commenti, ok?

    codice:
    </head>
    <body>
    
    <script language="Javascript">
    <!--
    function image() { // cosa fa questa funzione? 
    };
    
    image = new image(); // Qui definisci un oggetto che ha le proprietà e
    //i metodi definiti dalla funzione precedente, che però non faceva niente.
    //In javascript è possibile definire direttamente un oggetto immagine:
    // var myImage = new Image();
    //e poi assegni un URL: myImage.src = "url_mia_immagine"; 
    number = 9;
    // imageArray
    // L'oggetto image di prima l'hai fatto diventare un array.
    // A javascript non dà tanto fastidio, ma in altri linguaggi
    //questo ti avrebbe causato non pochi problemi
    
    // L'array ha gli indici che vanno da 9 in su. Perché non sei partito da 0? 
    image[number++] = "[img]images/random/1phuel.jpg[/img]"
    image[number++] = "[img]images/random/4underworld2.jpg[/img]"
    image[number++] = "[img]images/random/3.jpg[/img]"
    image[number++] = "[img]images/random/5.jpg[/img]"
    image[number++] = "[img]images/random/6.jpg[/img]"
    image[number++] = "[img]images/random/s.jpg[/img]"
    image[number++] = "[img]images/random/d.jpg[/img]"
    image[number++] = "[img]images/random/8lairimar.jpg[/img]"
    image[number++] = "[img]images/random/6black-market-screens.jpg[/img]"
    
    // Qui sotto definisci la variabile increment e poi non la cambi più.
    //E' per questo che poi ti vengono le tre immagini tutte uguali.
    //Inoltre, a questo punto del codice, number vale 18.
    //Quindi increment varia tra 0 e 17, anzichè tra 0 e 8. E i tuoi indici vanno
    //da 9 a 17. Hai 9 possibili valori di increment a cui non corrisponde
    //nessuna immagine.
    increment = Math.floor(Math.random() * number);
    //-->
    </script>
    Michele
    King Of The Kill

  8. #8
    ah ho capito, quindi era un pò più complicato di quanto pensassi....forse era fondamentale specificare che questo script lho trovato su internet e non l'ho creato io!
    io sinceramente non sapevo dove metterci le mani!
    grazie ancora sei stato gentilissimo

  9. #9
    Figurati!
    Alla prossima!
    Michele
    King Of The Kill

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.