Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    89

    evitare due risultati uguali consecutivi in random

    Salve a tutti, prima cosa grazie a chi costantemente risponde in questo forum; molto efficiente ed utile!

    ho un problema. utilizzo uni script che ogni intervallo di tempo determinato cambia il colore dello sfondo della mia pagina html, pescando da 10 possibilità diverse.
    Il probema è che capita chiaramente che un colore venga selezionato per più di una volta consecutiva, con l'effetto di avere visivamente sul monitor lo stesso colore per un tempo di durata doppia di tutti gli altri.

    In pratica credo di dover aggiungere allo script una funzione che ricalcoli il colore random se quello randomizzato è uguale a quello precedente (se ho l'elemento 1 caricato, non può essere caricato un'altra volta l1).

    Mi potete aiutare?

    questolo script:
    Codice PHP:
    function setbackground()
    {
    window.setTimeout"setbackground()"700); // 5000 milliseconds delay

    var index Math.round(Math.random() * 9);

    var 
    ColorValue "00FFFF"// default color - white (index = 0)

    if(index == 1)
    ColorValue "8A2BE2";
    if(
    index == 2)
    ColorValue "FF1493";
    if(
    index == 3)
    ColorValue "00FF00";
    if(
    index == 4)
    ColorValue "FF0000";
    if(
    index == 5)
    ColorValue "FFFF00";
    if(
    index == 6)
    ColorValue "FFA500";
    if(
    index == 7)
    ColorValue "8B008B";
    if(
    index == 8)
    ColorValue "FFCC99";
    if(
    index == 9)
    ColorValue "0000FF";

    document.bgColor=ColorValue;


    Ho trovato questo post ( http://forum.html.it/forum/showthrea...ghlight=random ), in cui si parla di shuffle... ma non credo di aver capito bene. Anche creando sequenze diverse, potrebbe accadere che venga a combaciare lo stesso colore (l'ultimo di una sequenza e il primo della sequenza successiva)

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    89
    ho trovato anche questo... però non riesco a integrarlo

    Codice PHP:
    var randNum 0;
    function 
    randNoDups(maxNum)
    {
    tmpRand randNum;
    while (
    tmpRand == randNum) {
    tmpRand Math.round(Math.random()*maxNum);
    }
    randNum tmpRand;
    return 
    tmpRand;


  3. #3
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Un'altro approccio:
    codice:
    <script>
    var colori = ("8A2BE2,FF1493,00FF00,FF0000,FFFF00,FFA500,8B008B,FFCC99,0000FF").split(","); 
    var old = "";
    function setbackground() { 
    	do {
    		var ColorValue = colori[Math.floor(Math.random() * colori.length)]; 
    	} while (old==ColorValue);
    	document.bgColor=ColorValue; 
    	window.setTimeout( "setbackground()", 700); 
    }
    </script>
    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    89
    grazie per la risposta tempestiva br1, ma modificando il codice in questo modo ottengo ancora sequenze dello stesso colore consecutive. possibile?

    il test www.made-design.net/manuel/test.html

  5. #5
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Scusa, una svista
    codice:
    function setbackground() { 
    	do {
    		var ColorValue = colori[Math.floor(Math.random() * colori.length)]; 
    	} while (old==ColorValue);
    	document.bgColor = ColorValue; 
    	old = ColorValue;
    	window.setTimeout( "setbackground()", 700); 
    }
    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    89
    grazie tante, davvero.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    89


    mi è balentata per la mente una ideuzza!
    e se volessi che il testo della mia testata avesse lo style COLOR:ColorValue? in pratica il testo avrebbe gli stessi colori dello sfondo della pagina; avendo già di per se un fondino bianco, sembrerebbe una maskera prendendo la successione dei colori dello sfondo.

    E' possibile farlo aggiungendo qualcosa come: miatestata.style.color = '#ColorValue';

    non è così semplice vero?

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    89
    ho osato troppo ...

  9. #9
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da morfina
    ho osato troppo ...
    la cosa migliore e' creare due (o piu' all'occorrenza) classi nel CSS e passare dall'una all'altra con:

    document.getElementById("IDdelBlocco").className = "nomeDellaClasse";

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    89
    RISOLTO.
    se dovesse servire a qualcuno, questo script cambia il colore randomicamente di sfondo pagina e del colore del testo contenuto in un div specifico (non permette che lo stesso colore venga ripetuto due o più volte consucutive) :

    Codice PHP:
    var colori = ("8A2BE2,FF1493,00FF00,FF0000,FFFF00,FFA500,8B008B,FFCC99,0000FF").split(","); 
    var 
    old "";
    function 
    setbackground() { 
        do {
            var 
    ColorValue colori[Math.floor(Math.random() * colori.length)]; 
        } while (
    old==ColorValue);
        
    document.bgColor ColorValue;
        
    document.getElementById('miodiv').style.color=ColorValue;
        
    old ColorValue;
        
    window.setTimeout"setbackground()"500);


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.