IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Pourquoi l'alerte ne s'affiche-t-il pas ?


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 76
    Par défaut Pourquoi l'alerte ne s'affiche-t-il pas ?
    Bonsoir à toutes et à tous !

    Je ne comprends pas pourquoi mon alerte ne s'affiche. Le problème vient du paramètre ! Car lorsque je passe du numérique aucun problème mais lorsque je passe une chaine de caractère ça ne va plus !

    Je pense que cela vient de la concaténation. Pourtant j'ai tout essayé avec le simple quote et double quotes mais rien n'y fait ça ne marche pas. C'est pour ça que je me tourne vers vous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <html>
    	<head>
    		<title> Javascript - Ex08 </title>
    		<link rel="stylesheet" href="form.css"/>
    		<script Language="Javascript">	
    		function jouer()
    		{
    			/* Declarations des variables */
    				var saisie;
    				var mot='salut';
     
    			/* Affichage de la case de saisie */
    				saisie=document.getElementById("saisie");
    				saisie.innerHTML="Lettre choisie</br><input type='text' id='lettre' size=2 onkeyup='choix("+mot+")'/>";
    		}
    		function choix(mot)
    		{
    			alert(mot);
    		}
    		</script>
    	</head>
    	<body id="corps">
    		<center>
    			<input TYPE="button" value="Jouer" ONCLICK="jouer()" id="jouer"/>
    			<div id="saisie"></div>
    		</center>
    	</body>
    </html>
    Amicalement crodilus.

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par défaut
    Salut tu as oublié les doubles quotes et ses échappements rien de bien grave.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <html>
    	<head>
    		<title> Javascript - Ex08 </title>
    		<link rel="stylesheet" href="form.css"/>
    		<script Language="Javascript">	
    		function jouer()
    		{
    			/* Declarations des variables */
    				var saisie;
    				var mot='salut';
     
    			/* Affichage de la case de saisie */
    				saisie=document.getElementById("saisie");
    				saisie.innerHTML="Lettre choisie</br><input type='text' id='lettre' size=2 onkeyup='choix(\""+mot+"\")'/>";
    		}
    		function choix(mot)
    		{
    			alert(mot);
    		}
    		</script>
    	</head>
    	<body id="corps">
    		<center>
    			<input TYPE="button" value="Jouer" ONCLICK="jouer()" id="jouer"/>
    			<div id="saisie"></div>
    		</center>
    	</body>
    </html>
    Bonne soirée

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 76
    Par défaut
    Merci bien pour ta réponse !

    Mais j'ai encore une question, pourquoi cela fonctionne ainsi et pas comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    saisie.innerHTML="Lettre choisie</br><input type='text' id='lettre' size=2 onkeyup='choix(\"+mot+\")'/>";
    Car le caractère d'échappement \ permet de retire la fonction au caractère qui le suit. Donc dans le cas que je viens de donner,il devrait permettre au " de ne plus servir de délimitation de chaine ? ! pourquoi encore en rajouter ?

    Ou alors il indique que tout les " jusqu'au prochain \" n'auront plus leur effet par défaut ?

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Lorsque tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    saisie.innerHTML="Lettre choisie</br><input type='text' id='lettre' size=2 onkeyup='choix("+mot+")'/>";
    le code HTML correspondant (donc celui qui sera injecté dans la page) sera :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    Lettre choisie</br><input type='text' id='lettre' size=2 onkeyup='choix(salut)'/>
    En dehors de l'erreur de syntaxe pour le <br />, tu remarqueras que tu cherches à faire un alert de la variable salut, qui n'existe pas. Donc erreur et pas de message.

    Si tu échappes les quotes, le code injecté sera :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    Lettre choisie</br><input type='text' id='lettre' size=2 onkeyup='choix("salut")'/>
    c'est-à-dire que JavaScript ne va pas interpréter les quotes (et donc pas fermer la chaine) mais rendra la chaine telle que souhaitée : tu auras bien l'affichage de la chaine passée en paramètre.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre Expert

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par défaut
    Comme as dit Bovino, lorsque tu click sur le bouton jouer tu génère ce code html :
    Lettre choisie</br><input type='text' id='lettre' size=2 onkeyup='choix(salut)'/>
    La chaine salut n'est pas une chaine string que tu passe a ta fonction, s'est une variable, elle te retourne undefined car elle n'est pas defini.
    Si tout en haut de ton code javascript tu la défini, tu pourra utiliser ton script telque tu l'a fait.
    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var salut = "salut";
    Te permettra d'avoir le retour string de ta variable.

    Bonne soirée.

  6. #6
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 76
    Par défaut
    Bon j'ai du mal à comprendre le pourquoi donc voici l'idée que j'ai de la concaténation :


    1) choix("+mot+")==>choix(""salut"") : ne fonctionne pas car forme deux chaines vides

    2) choix(\"+mot+\")==> choix(+"salut"+) : ne fonctionne pas car concatène la chaine salut à rien du tout


    3) choix(\""+mot+"\")==>choix(""salut"") : ce code fonctionne mais je ne comprends pas pourquoi car dans ma tête le résultat de la concaténation est le même que le premier.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pourquoi mon site ne s'affiche t-il pas partout de la même facon?
    Par rickgoz dans le forum Mise en page CSS
    Réponses: 32
    Dernier message: 05/12/2008, 22h17
  2. pourquoi mes coordonnées ne s'affichent pas à l'ecran?
    Par christianf dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 21/09/2007, 10h45
  3. mon alerte ne s'affiche pas sous ie7
    Par taka10 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 04/09/2007, 14h46
  4. Réponses: 2
    Dernier message: 17/11/2006, 11h35
  5. [Outils][Crystal Report] Pourquoi mes icones ne s'affichent pas ?
    Par tonynho dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 12/05/2006, 15h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo