Cambiare frase e immagine al giorno dopo

Stato
Chiusa ad ulteriori risposte.

cavaliere123

Utente Attivo
31 Lug 2012
416
0
16
Buonasera desidero un'altra spiegazione che chiedo gentilmente a voi tutti.

ho fatto lo script che mi cambiava frase ed immagine ogni tot tempo e avevo impostato cosi :

HTML:
var frasi = new Array();          
frasi[0]= "Se la conoscenza crea problemi, <br> non e' con l'ignoranza che li si risolve";
frasi[1]= "Il linguaggio richiede di essere accordato come il violino... troppe o troppe poche parole guastano il messaggio.";
frasi[2]= "Il mondo e' piu' silenzioso, bisogna solo ascoltare.</br> Se sappiamo ascoltare possiamo sentire il progetto di Dio.";
frasi[3]= "Volevo ricordarti che l'amore e' rimanere </br> e non sparire per vedere se uno poi ci tiene.";
frasi[4]= "- Vai, cambia le tue stelle e vivi una vita migliore della mia.<br>- Ma si puo' fare padre... un uomo puo' cambiare il corso delle stelle?<br> - Si William, se ha fede sufficiente un uomo puo' fare tutto.";
frasi[5]= "Non e' elegante quando si ha una superiorita', farla notare, </br> ma e' da screanzati mettere uno nella necessita' di farla rilevare";
frasi[6]= "Giustizia. Quattro cose spengono la giustizia: </br> l'amore, l'odio, il timore e il guadagno";
frasi[7]= "Solo la luce che uno accende a se stesso, </br> risplende in seguito anche per gli altri";
frasi[8]= "La bellezza delle cose esiste nella mente di chi le contempla";
frasi[9]= "Le decisioni sono un modo per definire se stessi. </br> Sono il modo per dare vita e significato ai sogni. </br> Sono il modo per farci diventare cio' che vogliamo";
frasi[10]= "Gli uomini passano, le idee restano. <br> Restano le loro tensioni morali e continueranno <br> a camminare sulle gambe di altri uomini"; 
frasi[11]= "Il sorriso: una curva che puo' raddrizzare un sacco di cose.";




// imposti subito il primo elemento 0
    document.getElementById("citazione").innerHTML = frasi[0];
    // inizializzi il contatore al secondo elemento 1
    var id=1 
    function scrivere() { 
        if (id==frasi.length) { 
            id=0; 
        } 
        document.getElementById("citazione").innerHTML = frasi[id];
        id++ 
 

} 
    setInterval('scrivere()',86400000);

ma mi era sfuggito una cosa.... ogni volta che chiudo il sito o il blog il tempo che sta calcolando si resetta e quindi il valore dell'array non cambierà mai....

Ho letto sempre su questo sito il seguente script :

HTML:
<SCRIPT LANGUAGE="JavaScript">
<!--

now = new Date();
day = now.getDate();
month = now.getMonth() + 1;
document.write('<IMG SRC="immagini/' + day + '_' + month + '.jpg">');
//-->
</SCRIPT>

ma che non è attuabile con delle frasi diverse.... a meno che non creo 365 file js con dentro scritta la frase.

Non c'è un metodo che quando cambia data in automatico manda un valore successivo dell'array sia delle immagini che delle frasi ?
Grazie.
 
Forse soluzione

Anche su questo stesso sito ho trovato la soluzione alla mia domanda e anche se modificato un pochino, in modo da essere più chiaro posto qui lo script :

HTML:
var frasi = new Array();          
frasi[0]= "Se la conoscenza crea problemi, <br> non e' con l'ignoranza che li si risolve";
frasi[1]= "Il linguaggio richiede di essere accordato come il violino... troppe o troppe poche parole guastano il messaggio.";
frasi[2]= "Il mondo e' piu' silenzioso, bisogna solo ascoltare.</br> Se sappiamo ascoltare possiamo sentire il progetto di Dio.";
frasi[3]= "Volevo ricordarti che l'amore e' rimanere </br> e non sparire per vedere se uno poi ci tiene.";
frasi[4]= "- Vai, cambia le tue stelle e vivi una vita migliore della mia.<br>- Ma si puo' fare padre... un uomo puo' cambiare il corso delle stelle?<br> - Si William, se ha fede sufficiente un uomo puo' fare tutto.";
frasi[5]= "Non e' elegante quando si ha una superiorita', farla notare, </br> ma e' da screanzati mettere uno nella necessita' di farla rilevare";
frasi[6]= "Giustizia. Quattro cose spengono la giustizia: </br> l'amore, l'odio, il timore e il guadagno";
frasi[7]= "Solo la luce che uno accende a se stesso, </br> risplende in seguito anche per gli altri";
frasi[8]= "La bellezza delle cose esiste nella mente di chi le contempla";
frasi[9]= "Le decisioni sono un modo per definire se stessi. </br> Sono il modo per dare vita e significato ai sogni. </br> Sono il modo per farci diventare cio' che vogliamo";
frasi[10]= "Gli uomini passano, le idee restano. <br> Restano le loro tensioni morali e continueranno <br> a camminare sulle gambe di altri uomini"; 
frasi[11]= "Il sorriso: una curva che puo' raddrizzare un sacco di cose.";




    function scrivere() { 
        
var oggi=new Date();
var giorno=oggi.getDate();
var mese=oggi.getMonth()
var anno=oggi.getFullYear()
var totale=(giorno+mese+anno)
var calcolo=(totale%frasi.length);

        document.getElementById("citazione").innerHTML = frasi[calcolo];
      
 

} 
    setInterval('scrivere()',3000);


Ho fatto tante prove e funziona, ma una curiosità il simbolo % non è la funzione che da solo il resto di una operazione ?? Quindi se con due date diverse mi ritrovo lo stesso resto dovrebbe portarmi alla frase con il valore del resto come id, invece va avanti, cioè mi posta cmq la frase successiva....
Forse data l'ora sto prendendo un abbaglio ma non so spiegarmi la cosa...

E poi se potete un'altra cosa, come vedete il setintervall è impostato a 3 sec per evitare che chi apre la pagina debba aspettare troppo prima di vedere comparire la prima scritta, se imposto un elemento prima della funzione ogni volta anche se per pochi secondi si vedrà sempre la stessa frase, non c'è un metodo diverso ??

Grazie come sempre delle vostre risposte :) Domenico.
 
E poi se potete un'altra cosa, come vedete il setintervall è impostato a 3 sec per evitare che chi apre la pagina debba aspettare troppo prima di vedere comparire la prima scritta, se imposto un elemento prima della funzione ogni volta anche se per pochi secondi si vedrà sempre la stessa frase, non c'è un metodo diverso ??

puoi creare un numero a caso tra 0 e la lunghezza del tuo array
Codice:
var rand = Math.floor(Math.random()*frasi.length);
document.getElementById("citazione").innerHTML = frasi[rand];

ma non ho capito cosa vorresti fare con l'oggetto Date()
 
Risposta

Buonasera, pensavo che ci fosse un metodo, una funzione che si accorgesse quando cambia la data e a questo evento facesse scorre di un elemento nell'array, nella procedura che ho postato mi è servito solo per fare un calcolo e dividerlo per la lunghezza dell'array cosi da far scorrere ogni volta che cambia la data e quindi la somma .... tutto qua. Spero di essere stato chiaro.
 
Potresti scrivere 31 frasi e cambiarla ogni giorno cosi
Codice:
var data=new Date();
document.getElementById("citazione").innerHTML = frasi[data.getDate()-1];
 
Mi potrebbe dare una mano all'altro mia discussione per cortesia ??? sempre se non è di disturbo ... altrimenti taccio :)
 
E se ne facessi 366 di frasi ???
potresti indicare nell'indice il mese e il giorno corrente
Codice:
 <script>
            var frasi = new Array();          
            frasi[81]= "1 agosto";
            frasi[88]= "8 agosto";
            frasi[1225]= "25 dicembre";
            var oggi=new Date();
            var giorno=oggi.getDate();
            var mese=oggi.getMonth()
            document.getElementById("citazione").innerHTML = frasi[mese + 1 + "" + giorno];
        </script>
Mi potrebbe dare una mano all'altro mia discussione per cortesia ??
gi ho dato una letta veloce ma non è cosi semplice da interpretare Appena ho un po piu di tempo gli ridaro un altra occhiata
 
Grazie

Gentilissimo.... lo script funziona benissimo.... a volte le cose più semplici sono le migliori.... ed io che cercavo l'algoritmo del secolo e vabbè :))) Per l'altra cosa, quando vuoi, ci mancherebbe ... anzi già gentilissimi :) Un saluto.
 
potresti indicare nell'indice il mese e il giorno corrente
Codice:
 <script>
            var frasi = new Array();         
            frasi[81]= "1 agosto";
            frasi[88]= "8 agosto";
            frasi[1225]= "25 dicembre";
            var oggi=new Date();
            var giorno=oggi.getDate();
            var mese=oggi.getMonth()
            document.getElementById("citazione").innerHTML = frasi[mese + 1 + "" + giorno];
        </script>

gi ho dato una letta veloce ma non è cosi semplice da interpretare Appena ho un po piu di tempo gli ridaro un altra occhiata
Chiedo scusa. Dopo ricerche sono arrivato a testare questo script che per oggi, 8 maggio, funziona, ma mi sorge un problema:
JavaScript:
 <script>
            var frasi = new Array(); 
            frasi[111]= "11 gennaio"
            frasi[112]= "12 gennaio";
            //.........
            frasi[101]= "1 ottobre"
            //.........
            frasi[111]= "1 novembre"
            frasi[112]= "2 novembre";
            //.......
            frasi[1225]= "25 dicembre";
            var oggi=new Date();
            var giorno=oggi.getDate();
            var mese=oggi.getMonth()
            document.getElementById("citazione").innerHTML = frasi[mese + 1 + "" + giorno];
        </script>
come faccio a non far coincidere le date 11 gennaio con 1 novembre?
Grazie.
 
Stato
Chiusa ad ulteriori risposte.

Discussioni simili