Phrase aléatoire

Phrase aléatoire - HTML/CSS - Programmation

Marsh Posté le 30-04-2010 à 11:11:00    

Bonjour,
Le script suivant permet de générer une des 5 phrases au hasard :  
 

Code :
  1. <script>
  2. aleatoire=Math.floor(Math.random()*5)
  3. switch(aleatoire){
  4. case 0:document.write("phrase1" );break;
  5. case 1:document.write("phrase2" );break;
  6. case 2:document.write("phrase3" );break;
  7. case 3:document.write("phrase4" );break;
  8. case 4:document.write("phrase5" );break;
  9. }
  10. </script>


 
Le problème c'est que les phrases ne sont générées que lorsqu'on recharge la page. J'aimerai pouvoir mettre un bouton, et quand on clique dessus, une phrase se génère dans un rectangle. On peut ainsi générer plusieurs phrases sans avoir à recharger la page. Comment faire ?
 
J'aimerai aussi que pour chaque phrase, à droite du rectangle, apparaisse l'expression "cliquez-ici" qui renvoie vers une page liée à la phrase générée. Par exemple, la phrase1 renverra toujours vers le lien1, etc..
 
Voici une image qui expose le problème :  
 
http://img265.imageshack.us/img265/2142/captureeo.png
 
Merci  :jap:


---------------
Mon ancien feedback A/V : http://forum.hardware.fr/hfr/Achat [...] 3624_1.htm
Reply

Marsh Posté le 30-04-2010 à 11:11:00   

Reply

Marsh Posté le 30-04-2010 à 11:26:51    

Tu fais de ton script une fonction
Tu attaches un event sur le boutton "cliquez ici", qui lance la fonction
Dans ton case, tu dois changer l'atttribut href de ton lien.
 
Je te laisse faire le code tout seul  :)

Reply

Marsh Posté le 30-04-2010 à 12:13:34    

J'ai modifié le code et voilà ce que j'ai :  
 

Code :
  1. <script>
  2. function nombre_alea(id_ecrire){
  3. var nbr_ch=2;
  4. var x=Math.random();
  5. var nb=x*Math.pow(10,nbr_ch);
  6. nb_g=Math.round(nb);
  7. var obj=document.getElementById(id_ecrire);
  8. obj.value=nb_g;
  9. }
  10. </script>
  11. <input type="button" value="Nouvelle phrase" onClick="nombre_alea('phrase');">
  12. <input type="text" id="phrase">


 
Je n'arrive pas à faire correspondre des phrases, et encore moins les liens  :sweat:


Message édité par schnoqueur le 30-04-2010 à 12:14:24

---------------
Mon ancien feedback A/V : http://forum.hardware.fr/hfr/Achat [...] 3624_1.htm
Reply

Marsh Posté le 30-04-2010 à 16:21:06    

Je ne comprends pas pourquoi tu as changé ta fonction.
Tiens, je t'ai fais un truc en vitesse
 

Code :
  1. <input type="button" value="Nouvelle phrase" onClick="populate();">
  2. <input type="text" value="" id="tt"/>
  3. <a href="" id="link">link</a>
  4. <script type="text/javascript" charset="utf-8">
  5. function populate () {
  6.     var obj=document.getElementById("tt" ),
  7.     link=document.getElementById("link" ),
  8.     aleatoire=Math.floor(Math.random()*5);
  9.     switch(aleatoire){
  10.     case 0:obj.value="phrase1";link.setAttribute("href","http://google.be" );break;
  11.     case 1:obj.value="phrase2";link.setAttribute("href","http://google.fr" );break;
  12.     case 2:obj.value="phrase3";link.setAttribute("href","http://google.com" );break;
  13.     case 3:obj.value="phrase4";link.setAttribute("href","http://google.de" );break;
  14.     case 4:obj.value="phrase5";link.setAttribute("href","http://google.cn" );break;
  15.     }
  16. }
  17. </script>


Reply

Marsh Posté le 30-04-2010 à 18:20:35    

Merci  :jap:  
 
J'ai une dernière question : est-il possible que le script aille chercher les phrases + lien dans un fichier .txt, afin de ne pas faire un script géant si j'ai beaucoup de phrases.

Message cité 1 fois
Message édité par schnoqueur le 30-04-2010 à 18:26:26

---------------
Mon ancien feedback A/V : http://forum.hardware.fr/hfr/Achat [...] 3624_1.htm
Reply

Marsh Posté le 30-04-2010 à 23:56:11    

la réponse m'intéresse merci.
est-ce qu'on peut lire un fichier avec javascript ?

Reply

Marsh Posté le 01-05-2010 à 10:35:55    

Un fichier texte (.txt) non.
Mais on peut lire du xml, ou mieux du json.
Mais pour faire cela, il est moins verbeux d'utiliser une librairie spécialisée.
 
Mais sinon, voilà le code avec un object qui contient les donnés.
C'est une bonne base pour rendre l'object externe sous forme de fichier json

Code :
  1. <input type="button" value="Nouvelle phrase" onClick="populate();">
  2.     <input type="text" value="" id="tt"/>
  3.     <a href="" id="link">link</a>
  4.     <script type="text/javascript" charset="utf-8">
  5.     var objTest = {"rand": [
  6.         {"txt": "texte 1",
  7.             "loc": "http://www.google.com",
  8.         },
  9.         {"txt": "texte 2",
  10.             "loc": "http://www.google.be",
  11.         },
  12.         {"txt": "texte 3",
  13.             "loc": "http://www.google.fr",
  14.         }
  15.         ],
  16.     };
  17.     function populate () {
  18.         var num=objTest.rand.length,// calcule nombre d'élément
  19.         obj=document.getElementById("tt" ),
  20.         link=document.getElementById("link" ),
  21.         al=Math.floor(Math.random()*num);
  22.         obj.value=objTest.rand[al].txt;
  23.         var pp=objTest.rand[al].loc;
  24.         link.setAttribute("href",pp );
  25.     }
  26.     </script>


Reply

Marsh Posté le 01-05-2010 à 11:12:23    

David Boring a écrit :

Un fichier texte (.txt) non.
Mais on peut lire du xml, ou mieux du json.
Mais pour faire cela, il est moins verbeux d'utiliser une librairie spécialisée.
 
Mais sinon, voilà le code avec un object qui contient les donnés.
C'est une bonne base pour rendre l'object externe sous forme de fichier json

Code :
  1. <input type="button" value="Nouvelle phrase" onClick="populate();">
  2.     <input type="text" value="" id="tt"/>
  3.     <a href="" id="link">link</a>
  4.     <script type="text/javascript" charset="utf-8">
  5.     var objTest = {"rand": [
  6.         {"txt": "texte 1",
  7.             "loc": "http://www.google.com",
  8.         },
  9.         {"txt": "texte 2",
  10.             "loc": "http://www.google.be",
  11.         },
  12.         {"txt": "texte 3",
  13.             "loc": "http://www.google.fr",
  14.         }
  15.         ],
  16.     };
  17.     function populate () {
  18.         var num=objTest.rand.length,// calcule nombre d'élément
  19.         obj=document.getElementById("tt" ),
  20.         link=document.getElementById("link" ),
  21.         al=Math.floor(Math.random()*num);
  22.         obj.value=objTest.rand[al].txt;
  23.         var pp=objTest.rand[al].loc;
  24.         link.setAttribute("href",pp );
  25.     }
  26.     </script>




nan mais tu as vu ce que tu racontes là ? bien sur que oui on peut lire un fichier TXT c'est la base de la base.
Et ça serait le plus simple pour lui :mlc:


---------------
Blablaté par Harko
Reply

Marsh Posté le 01-05-2010 à 18:27:15    

gatsu35 a écrit :


nan mais tu as vu ce que tu racontes là ? bien sur que oui on peut lire un fichier TXT c'est la base de la base.
Et ça serait le plus simple pour lui :mlc:


 
Peux-tu nous dire comment ?  :D


---------------
Mon ancien feedback A/V : http://forum.hardware.fr/hfr/Achat [...] 3624_1.htm
Reply

Marsh Posté le 03-05-2010 à 10:24:33    

gatsu35 a écrit :


nan mais tu as vu ce que tu racontes là ? bien sur que oui on peut lire un fichier TXT c'est la base de la base.
Et ça serait le plus simple pour lui :mlc:


 
Ha désolé d'avoir induit le foromeur en erreur.  
Je n'ai jamais travaillé avec des fichiers textes, je ne savais donc pas que c'était possible.
Tu aurais un bon tutorial ? et tu peux mettre des objects ou des arrays dedans ?

Reply

Marsh Posté le 03-05-2010 à 10:24:33   

Reply

Marsh Posté le 03-05-2010 à 10:29:13    

le resultat d'une requete ajax est du texte, donc tu peux faire ce que tu veux derrière


---------------
Blablaté par Harko
Reply

Marsh Posté le 03-05-2010 à 10:33:50    

Tout simplement. Ok, merci

Reply

Marsh Posté le 03-05-2010 à 11:26:41    

il faut un langage serveur ou pas ? et si je ne peux utiliser que javascript ?

Reply

Marsh Posté le 30-03-2011 à 01:32:08    

Avant tout, désolé de déterrer un vieux post :jap:

schnoqueur a écrit :

Bonjour,
Le script suivant permet de générer une des 5 phrases au hasard : ...

Si tu veux varier un peu les plaisirs, j'ai un script qui permet lui aussi de générer des phrases au hasard (environ 10 puissance 78 phrases correctes et uniques)
(voir ici pour les curieux : générateur de phrases )

schnoqueur a écrit :

..., afin de ne pas faire un script géant si j'ai beaucoup de phrases.

heu... quel est le problème d'un script géant ? La lecture de nombreuses instructions imbriquées ou de frameworks empilés les uns sur les autres peuvent en effet ralentir ton site et poser un tas d'autres soucis, mais... pour du contenu littéral ? :??: Ca ne prend pas assez de performance pour qu'on s'en préoccupe outre mesure, surtout sur un petit outil ludique comme ça il me semble :jap:

Ryoh a écrit :

il faut un langage serveur ou pas ? et si je ne peux utiliser que javascript ?

Comme tu peux le constater, mon générateur ne fait appel qu'à du code client...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed