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 :

Appel conditionnel d'une fonction


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 101
    Points : 59
    Points
    59
    Par défaut Appel conditionnel d'une fonction
    Bonjour à tous,

    je cherche (c'est un exercice) à déclencher une fonction "à usage unique" depuis un bouton.
    J'ai écrit ce bout de code qui ne fonctionne pas:
    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
    <HTML>
    <HEAD>
     
    <SCRIPT Language="javascript">
    function usageunique()
    {temoin=1; alert("Le témoin vaut "+ temoin);}
    </SCRIPT>
     
    <SCRIPT Language="javascript">
    function test()
    {if (temoin=0){"usageunique();"} else {alert("La fonction a déjà été utilisée !!";}}
    </SCRIPT>
     
     
     
    </HEAD>
    <BODY>
    <SCRIPT Language="javascript">var temoin=0</SCRIPT>
    <FORM>
     
    <INPUT TYPE=button   VALUE=Activer onclick="test();">
    </FORM>
    </BODY>
    </HTML>
    Je ne comprend pas pourquoi le test ne se fait pas... Problème de syntaxe ou plus grave... de structure ?

    Merci de votre aide

    PS j'ai essayé au lieu d'utiliser une fonction test() de mettre la condition derrière le "on click":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <FORM>
     
    <INPUT TYPE=button   VALUE=Activer onclick="<SCRIPT Language=javascript>if (temoin=0){'usageunique();'} 
                                                else {alert('La fonction a déjà été utilisée !!';};"</SCRIPT>
    </FORM>
    Sans succès...
    A+
    Philippe

  2. #2
    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 : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Salut.
    Le test se fait, sauf que ton test consiste en une affectation, ce qui a pour effet de réinitialiser ta variable à 0 et à retourner systématiquement vrai, donc entrer dans le if.
    Pour tester une valeur, c'est == (comparaison simple) ou === (comparaison aussi sur le type.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 101
    Points : 59
    Points
    59
    Par défaut
    Merci pour cette réponse rapide, j'ai fait la modif:

    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
    <HTML>
    <HEAD>
     
    <SCRIPT Language="javascript">
    function usageunique()
    {temoin=1; alert("Le témoin vaut "+ temoin);}
    </SCRIPT>
     
    <SCRIPT Language="javascript">
    function test()
    {if (temoin==0){"usageunique();"} else {alert("La fonction a déjà été utilisée !!";}}
    </SCRIPT>
     
     
     
    </HEAD>
    <BODY>
    <SCRIPT Language="javascript">var temoin=0</SCRIPT>
    <FORM>
     
    <INPUT TYPE=button   VALUE=Activer onclick="test();">
    </FORM>
    </BODY>
    </HTML>
    mais ça ne fonctionne toujours pas

    A+
    Philippe

  4. #4
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 26
    Points : 29
    Points
    29
    Par défaut
    "usageunique();" n'est pas un appel d'une fonctionne c'est seulement un chaîne de caractères.

    Mette usageunique(); sans guillemets et comme Bovino a dit, change le = à ==. Aussi il te manque une ')' au fin de l'appel à 'alert'.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 101
    Points : 59
    Points
    59
    Par défaut
    Super, merci pour les conseils et la correction:

    Voici le code qui fonctionne (ça peut aider un autre débutant comme moi !)
    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
     
     
    <HTML>
    <HEAD>
     
    <SCRIPT Language="javascript">
    function usageunique()
    {temoin=1; alert("Le témoin vaut "+ temoin);}
    </SCRIPT>
     
    <SCRIPT Language="javascript">
    function test()
    {if (temoin==0){usageunique();} else {alert("La fonction a déjà été utilisée !!");}}
    </SCRIPT>
     
     
     
    </HEAD>
    <BODY>
    <SCRIPT Language="javascript">var temoin=0</SCRIPT>
    <FORM>
     
    <INPUT TYPE=button   VALUE=Activer onclick="test();">
    </FORM>
    </BODY>
    </HTML>
    Sinon, est-il possible de s'affranchir de la fonction "test()" en mettant le test derrière le onclick du formulaire ? (avec une syntaxe correcte...)

    A+
    Philippe

  6. #6
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 26
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par filtep Voir le message
    Super, merci pour les conseils et la correction:

    Sinon, est-il possible de s'affranchir de la fonction "test()" en mettant le test derrière le onclick du formulaire ? (avec une syntaxe correcte...)
    Oui, tu peux enlever le gestion de l'exception 'click' du élément DOM:

    <INPUT TYPE=button VALUE=Activer onclick="usageunique(); this.onclick=null;">

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 101
    Points : 59
    Points
    59
    Par défaut
    mais dans ce cas où est le test ??

    Je me demandais si on pouvait faire le test lors du "onclick" avec un code du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <FORM>
     
    <INPUT TYPE=button   VALUE=Activer onclick="<SCRIPT Language=javascript>if (temoin=0){'usageunique();'} 
                                                else {alert('La fonction a déjà été utilisée !!';};"</SCRIPT>
    </FORM>
    et ainsi ne pas avoir besoin de la fonction test() ?

    C'est juste pour ma culture, pour apprendre

    A+
    Philippe

  8. #8
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 26
    Points : 29
    Points
    29
    Par défaut
    Oui tu peut faire le test lors onclick, mais en enlevant la gestion d'exception 'onclick' après le premier emploi le test n'est pas nécessaire - la fonctionne sera exécutée seulement une fois.

    Si tu veux afficher des messages dans tout les deux cas (premier ou autre usage) c'est mieux comme tu as dit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    <INPUT TYPE=button   VALUE=Activer onclick="if (temoin==0){usageunique();} 
                                                else {alert('La fonction a déjà été utilisée !!');}"</SCRIPT>

Discussions similaires

  1. Appel processus dans une fonction
    Par donovann dans le forum C
    Réponses: 2
    Dernier message: 03/02/2009, 13h08
  2. Appel periodique d'une fonction
    Par Nowoday dans le forum C++
    Réponses: 9
    Dernier message: 10/07/2008, 22h05
  3. Appel automatique d'une fonction au lancement
    Par greg2 dans le forum C++
    Réponses: 3
    Dernier message: 10/07/2007, 09h04
  4. Réponses: 8
    Dernier message: 02/02/2006, 18h13
  5. Réponses: 4
    Dernier message: 01/07/2004, 19h15

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