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

    Script per stampare del testo random al click su un link

    Salve, ho un problema con uno script che stavo tentando di realizzare... Allora, io ho una lista di citazioni che devono essere visualizzate in modo random... Questo:
    codice:
    <script type="text/javascript"> 
    function randomquote() { 
    var ran=new Array(); 
     
    ran[0]='<span>e d\'improvviso quel silenzio tra noi e quel tuo sguardo strano, ti cade il fiore dalla bocca e poi...</span> - Lucio Battisti'; 
    ran[1]='<span>Come può uno scoglio arginare il mare?</span> - Lucio Battisti'; 
    ran[2]='<span>Hold me, love me or pretend to love me.</span> - Anonimo'; 
    ran[3]='<span>Domandarsi perchè quando cade la tristezza in fondo al cuore, come la neve non fa rumore...</span> - Lucio Battisti'; 
    ran[4]='<span>Capire tu non puoi, tu chiamale se vuoi... Emozioni...</span> - Lucio Battisti'; 
    ran[5]='<span>Mi piace pensare che ci siano ancora delle persone degne di fiducia in giro, ne ho viste talmente poche ultimamente.</span> - Monia Ghesini'; 
    ran[6]='<span>Sulu a morti non c\'è riparu!</span> - detto Calabrese'; 
    ran[7]='<span>L\'amore è un animale selvaggio, ti respira ti cerca, nidifica sui cuori spezzati...</span> - Rammstein'; 
    ran[8]='<span>La veste dei fantasmi del passato, cadendo lascia il quadro immacolato...</span> - Lucio Battisti'; 
    ran[9]='<span>Fa parte di una buona educazione sapere quando sia opportuno essere maleducati.</span> - Joan Fuster'; 
    ran[10]='<span>Non condivido la tua opinione, ma difenderò fino alla morte il tuo diritto ad esprimerla.</span> - Voltaire'; 
    ran[11]='<span>E\' proprio la possibilità di realizzare un sogno che rende la vita interessante.</span> - Paolo Coelho'; 
    ran[12]='<span>A volte basta un attimo per scordare una vita, ma a volte non basta una vita per scordare un attimo.</span> - Jim Morrison'; 
    ran[13]='<span>Il vostro futuro non è ancora stato scritto, quello di nessuno. Il vostro futuro è come ve lo creerete, perciò createvelo buono, tutti e due!</span> - Emmett Brown (Ritorno al futuro)'; 
    ran[13]='<span>Siamo veramente spietati solo verso le persone che sappiamo di non poter mai perdere.</span> - Arthur Schnitzler'; 
    ran[14]='<span>Arricchiamoci delle nostre reciproche differenze.</span> - Paul Valéry'; 
    ran[15]='<span>Io sono un peccatore, ma intorno a me non vedo santi.</span> - Anonimo'; 
    ran[16]='<span>Non avere paura del domani. Infondo oggi era il giorno che ti faceva paura ieri.</span> - Bob Marley'; 
    ran[17]='<span>Mi potrete togliere la libertà di volare, ma non la capacità.</span> - A. Sanna (Gold.)'; 
    ran[18]='<span>Se per essere saggio devo rinunciare a tutto ciò in cui credo, allora preferisco essere un folle.</span> - Naruto Uzumaki (Naruto)'; 
    ran[19]='<span>Ieri è storia, domani è mistero e oggi.oggi è un dono. Per questo si chiama presente.</span> - Oogway (Kung Fu Panda)'; 
    ran[20]='<span>Posso accettare di pentirmi di avere seguito un sogno che non sono riuscito a realizzare, ma non voglio pentirmi di aver rinunciato ad inseguirlo.</span> - Akito Takagi (Bakuman)'; 
    ran[21]='<span>Non stupirti se le persone muoiono, stupisciti piuttosto di essere ancora vivo.</span> - Seneca'; 
    ran[22]='<span>La rosa è rosa, la viola è viola, ma tu sei più bella di ogni cosa.</span> - Anonimo'; 
    ran[23]='<span>Non è bello ciò che è bello, ma è bello ciò che piace.</span> - Anonimo'; 
    ran[24]='<span>S\'ils n\'ont plus de pain, qu\'ils mangent de la brioche!</span> - Maria Antonietta d\'Asburgo'; 
    ran[25]='<span>Il vero male non è quello che si soffre, ma quello che si fa.</span> - Alessandro Manzoni'; 
    ran[26]='<span>Fermi tutti, mi è caduto il cervello!</span> - Capitan Jack Sparrow (Pirati dei Caraibi)'; 
    ran[27]='<span>Io rimango dell\'idea di un forum pulito e legale. Quindi, per me è NO.</span> - Hydex (Cit. Mara Maionchi)'; 
    ran[28]='<span>C\'erano i sogni. C\'era la realtà. C\'era lei che li faceva incontrare.</span> - Anonimo'; 
    ran[29]='<span>Se non ti scrivo non è perché non mi manchi. È perché ho paura di essere di troppo.</span> - Francesco Roversi'; 
    ran[30]='<span>Voglio però ricordarti com\'eri, pensare che ancora vivi, voglio pensare che ancora mi ascolti e che come allora sorridi, che come allora sorridi...</span> - I Nomadi'; 
    ran[31]='<span>Morire al tuo fianco, è un modo divino di morire.</span> - The Smiths'; 
     
    var id=Math.round(Math.random()*(ran.length-1)); 
    document.getElementById('quote').innerHTML=ran[id]; 
    } 
     
    window.onload = randomquote(); 
    </script>
    Io quindi ho un div con id quote appunto all'interno del quale dovevo stampare questo codice. E funziona tutto a meraviglia, insomma... Il problema? Ecco, il problema è che devo usarlo sui circuiti di forumfree, dove .innerHTML ed .appendChild sono entrambi bloccati per questioni di sicurezza. Per aggirare il problema, allora, mi sono detto, inserisco tutti i contenuti così:
    codice:
    <div id="quote">
    <div class="hide" id="cit1"><span>asdasd</span> - prova1</div>
    <div class="hide" id="cit2"><span>asdasd</span> - prova2</div>
    <div class="hide" id="cit3"><span>asdasd</span> - prova3</div>
    </div>
    Nascondendoli col css, e poi, cambio la classe ad uno random nascondendo tenendo nascosti gli altri. Pensavo ad una struttura if, dove se l'elemento ha classe hide allora imposto show, altrimenti imposto hide e seleziono un altro elemento... Questo perchè ovviamente, un elemento deve essere visualizzato al caricamento della pagina e poi va cambiato con uno random quando clicco su un link apposito. Sono completamente bloccato però, proprio non riesco a capire come fare... Potrebbe qualche anima pia, aiutarmi nell'impresa?

  2. #2
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    codice:
    var aQuotes = document.querySelectorAll(".hide");
    document.querySelector(".show").className = "hide";
    aQuotes[Math.floor(Math.random() * aQuotes.length)].className = "show";

  3. #3
    Originariamente inviato da carlomarx
    codice:
    var aQuotes = document.querySelectorAll(".hide");
    document.querySelector(".show").className = "hide";
    aQuotes[Math.floor(Math.random() * aQuotes.length)].className = "show";
    Potresti spiegarmi come utilizzare questo codice? Scusami, sono alle prime armi con javascript e non riesco proprio a capire come far funzionare il tutto >.< Ah, nel primo post ho dimenticato di dire che purtroppo non è possibile usare nemmeno jQuery

  4. #4
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da Devil402
    Potresti spiegarmi come utilizzare questo codice? Scusami, sono alle prime armi con javascript e non riesco proprio a capire come far funzionare il tutto >.<
    Lo metti in una funzione che lancerai ogni qual volta vorrai cambiare frase.


    Originariamente inviato da Devil402
    Ah, nel primo post ho dimenticato di dire che purtroppo non è possibile usare nemmeno jQuery
    Tranquillo, nessuno ne sentirà la mancanza

  5. #5
    Okeii, graziee! Ora ho solo un problema, utilizzandolo per il mio esempio

    codice:
    <div id="quote">
    <div class="show"><span>asdasd</span> - prova1</div>
    <div class="show"><span>asdasd</span> - prova2</div>
    <div class="show"><span>asdasd</span> - prova3</div>
    <div class="show"><span>asdasd</span> - prova4</div>
    <div class="show"><span>asdasd</span> - prova5</div>
    </div>
    in questo modo

    codice:
    <script type="text/javascript">
    function randomquote() {
    var aQuotes = document.querySelectorAll(".hide");
    document.querySelector(".show").className = "hide";
    aQuotes[Math.floor(Math.random() * aQuotes.length)].className = "show";
    }
    
    window.onload = randomquote();
    </script>
    Non riesco ad ottenere l'effetto giusto.. Il primo div viene nascosto mentre il secondo mostrato assieme agli altri 3, quando poi clicco sul link che richiama la funzione, il primo viene mostrato ed il secondo nascosto ma gli altri 3 restano visibili.. =/ Sbaglio qualcosa?

  6. #6
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da Devil402
    Non riesco ad ottenere l'effetto giusto.. Il primo div viene nascosto mentre il secondo mostrato assieme agli altri 3, quando poi clicco sul link che richiama la funzione, il primo viene mostrato ed il secondo nascosto ma gli altri 3 restano visibili.. =/ Sbaglio qualcosa?
    La classe iniziale di TUTTI TRANNE UNO dev'essere impostata su hide, non su show!

  7. #7
    Ah ecco, errore mio xD Grazie mille per l'enorme aiuto e scusami per il disturbo ^^ Funziona alla perfezione

  8. #8
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Figurati
    In realtà per essere più "pulito" ti conviene settare la classe di TUTTI su hide e cambiare il codice in questo modo:

    codice:
    <script type="text/javascript">
    function randomquote() {
      var aQuotes = document.querySelectorAll(".hide");
      document.querySelector(".show").className = "hide";
      aQuotes[Math.floor(Math.random() * aQuotes.length)].className = "show";
    }
    
    window.onload = function() {
      var aQuotes = document.querySelectorAll(".hide");
      aQuotes[Math.floor(Math.random() * aQuotes.length)].className = "show";
    };
    </script>

  9. #9
    Grazie mille, questo mi è stato molto molto utile!! Con queste ultime due righe sono riuscito a rimuovere l'unico problema che c'era e cioè la visualizzazione della prima citazione prima che la pagina fosse caricata per poi essere cambiata con quella random ^^ Adesso, quando la pagina è pronta viene visualizzata a random quella giusta, ottimo! Grazie mille ancora! :3

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.