Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: sfondo random

  1. #1

    sfondo random

    In una tabella, vorrei che all'interno di una cella, lo sfondo (colore del background), cambiassere in modo casuale ogni qual volta si accede alla pagina o si applica un "refresh" di questa.
    Mi è stato gentilmente fornito uno script che ho provato ma non funge:
    code:---------------------------------------------------------
    // Fai il preload delle immagini che vuoi utilizzare
    myImage1=new Image();
    myImage1.src="images/immagine1.gif";
    myImage2=new Image();
    myImage2.src="images/immagine2.gif";
    myImage3=new Image();
    myImage3.src="images/immagine3.gif";
    myImage4=new Image();
    myImage4.src="images/immagine4.gif";
    myImage5=new Image();
    myImage5.src="images/immagine5.gif";
    myImage6=new Image();
    myImage6.src="images/immagine6.gif";
    myImage7=new Image();
    myImage7.src="images/immagine7.gif";
    myImage8=new Image();
    myImage8.src="images/immagine8.gif";
    myImage9=new Image();
    myImage9.src="images/immagine9.gif";
    myImage10=new Image();
    myImage10.src="images/immagine10.gif";

    // Carichi le immagini all'interno di un array
    myImageArray=new Array();
    myImageArray[0]=myImage1;
    myImageArray[1]=myImage2;
    myImageArray[2]=myImage3;
    myImageArray[3]=myImage4;
    myImageArray[4]=myImage5;
    myImageArray[5]=myImage6;
    myImageArray[6]=myImage7;
    myImageArray[7]=myImage8;
    myImageArray[8]=myImage9;
    myImageArray[9]=myImage10;

    function changeBackground(id) {
    var p=Math.round(Math.random()*10); // assegna alla variabile p un valore random compreso tra 0 e 9
    window.getElementById(id).style.background=myImage Array[p].src;
    }

    window.document.onload=changeBackground('id_tabell a');
    --------------------------------------------------------

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    709
    Ciao Francesca,
    quando ho visto il tuo nuovo post, ho fatto alcune prove ed ho scoperto che la funzione seleziona correttamente un'immagine random. perciò il problema deve essere nell'assegnazione di questa immagine alla tabella. Ci ragionerò un po' su e ti farò sapere se trovo una soluzione; ne frattempo ti invio le modifiche ed i commenti alla funzione che ti avevo già inviato ("changeBackground(id)")
    codice:
    function changeBackground(id) { 
     var p=Math.round(Math.random()*10); // assegna alla variabile p un valore random compreso tra 0 e 9 
     var theURL=myImageArray[p].src; // assegna alla variabile theURL il path assoluto dell'immagine selezionata casualmente
     var bckgrd=theURL.slice(theURL.indexOf('images'),theURL.length); // estrae il path relativo da quello assoluto e lo assegna alla variabile bckgrd
     window.alert(bckgrd);
     window.document.getElementById(id).style.background=bckgrd; // setta l'immagine selezionata come background dell'oggetto
    }

  3. #3

    Grazie

    Grazie mille per la collaborazione.

  4. #4

    alternativa

    ho provato anche in questo modo ma non riesco a capire perchè mi cambia lo sfondo a tutta pagina e non solo alla tabella
    code
    --------------------------------------------
    <BODY onload="ColorePagina()">
    <SCRIPT LANGUAGE="JavaScript">
    ColPag = new Array(2)
    ColPag[0] = "#FF0000"
    ColPag[1] = "#FFFFFF"

    function ColorePagina()
    {
    Indice = Math.floor(Math.random() * ColPag.length);
    document.bgColor=ColPag[Indice]
    document.Colore_della_Pagina.tduno.value = " " + Indice + " bgColor = " + ColPag[Indice]
    }

    </script>



    <form name="Colore_della_Pagina">
    <TABLE cellSpacing=1 cellPadding=1 width="75%" border=1>
    <TR>
    <TD id=tduno name=tduno bgcolor="">
    <input type=hidden name=tduno value="">
    </TD>
    </TR>
    </TABLE>
    </P>


    </P>



    <TABLE cellSpacing=1 cellPadding=1 width="75%" border=1>
    <TR>
    <TD id=tddue value="">prova 2</TD>
    </TR>
    </TABLE>
    </form>
    </P>
    </BODY>
    ------------------------------------------------

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    709
    Non capisco bene il motivo di questa parte di codice:
    codice:
    Indice = Math.floor(Math.random() * ColPag.length);
    Se ti bastano solamente due colori, dovresti scrivere:
    codice:
    var bckgrd
    var p=Math.random(); // assegna alla variabile p un valore compreso tra 0 e 1
    if (p<0.5) {
      bckgrd="red"; // assegna alla variabile bckgrd il valore red
    } else {
      bckgrd="green"; // assegna alla variabile bckgrd il valore green
    }

  6. #6

    ma ...

    inizialmente mi servono solo 2 colori ma in un futuro me ne serviranno sicuramente di +, comunque il problema non è quello.
    Maledizione non funziona.

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    709
    In ogni caso la sintassi
    codice:
    Indice = Math.floor(Math.random() * ColPag.length);
    è sbagliata: il metodo random() restituisce un valore compreso tra 0 e 1 (es. 0.001254, 0.2354, ecc...) che, per esserti utile, deve essere moltiplicato *10 (minimo) al fine di ottenere un numero compreso tra 0 e 9.999999 a cui poi toglierai la parte decimale.

    Per il resto, prova questo codice:
    codice:
    <html>
    
    <head>
    	<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
    	<title>Prova</title>
    	<script language="JavaScript">
    	<!--
    	// Crei un array di colori 
    	myImageArray=new Array(); 
    	myImageArray[0]="#FF0000"; 
    	myImageArray[1]="#00FF00"; 
    	myImageArray[2]="#0000FF"; 
    	myImageArray[3]="#FFFFFF"; 
    	myImageArray[4]="#000000"; 
    	myImageArray[5]="#555555"; 
    	myImageArray[6]="#BBBBBB"; 
    	myImageArray[7]="#FF5555"; 
    	myImageArray[8]="#55FF55"; 
    	myImageArray[9]="#5555FF"; 
    
    	function changeBackground() { 
    		var p=Math.round(Math.random()*10); // assegna alla variabile p un valore random compreso tra 0 e 9 
    		var bckgrd=myImageArray[p];
    		window.alert(bckgrd);
    	} 
    
    	window.document.onload=changeBackground(); 
    	// -->
    	</script>
    </head>
    
    <body bgcolor="#ffffff">
    	<table>
    		<tr>
    			<td id="pippo" bgcolor="&{bckgrd};%">ciao</td>
    		</tr>
    	</table>
    </body>
    
    </html>

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Originariamente inviato da secan
    In ogni caso la sintassi
    codice:
    Indice = Math.floor(Math.random() * ColPag.length);
    è sbagliata:
    No e` coretta.

    Se ColPag.length e` due, avrai un numero random compreso tra 0 e 2 (0 compreso e 2 escluso), che poi diventa 0 o 1 applicando il floor

    Se ColPag.length e` diverso, avrai sempre un numero random intero fra 0 e ColPag.length-1.

    Al limite si dovrebbe applicare un parseInt, dato che il floor genera un numero reale (float) in cui la parte decimale e` a zero.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  9. #9

    Scusami

    Hai perfettamente ragione, mi rimane ancora un problema:
    <td id="pippo" bgcolor="&{bckgrd};%">ciao</td>

    il passaggio del dato nella parte html, questo non è corretto, non potendo impostare un value come diavolo faccio?
    Grazie per la pazienza

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    709
    Scusa tu, come Mich_ mi ha chiarito, la tua sintassi era corretta.
    Invece non ho capito la tua ultima domanda.

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.