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 :

Simulateur de pseudo calories (débutant)


Sujet :

JavaScript

  1. #21
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    je pense que tu n'as pas du lire mon code précédent
    Ah, j'ai compris, on parle pas du même post ! Moi je fais référence au post n°13.
    Ce code est le même que le source dans le 13...

  2. #22
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Ouf ! J'ai compris et trouvé grâce à l'intervention d'Algori qui explique la fonction eval().
    Quelle galère pour la simple addition de deux variables implicitements numériques
    Bref, pour d'autres débutants qui passeraient par là, et pour leur éviter des pertes de temps inutiles, le script final donne ceci:
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
    <script type="text/javascript">
    function calculer() {
    var valCalories= 0;
    var valLouches= 0;
    var newVal = 0;
     
    document.forms['simulateur'].elements['patates'][0].checked && (valCalories +=450) ;
    document.simulateur.carottes[0].checked && (valCalories +=120) ;
    document.simulateur.courges.checked && (valCalories +=250) ;
    document.simulateur.oignons.checked && (valCalories +=100) ;
    document.simulateur.poireaux.checked && (valCalories +=150) ;
    document.simulateur.sel.checked && (valCalories +=30) ;
    valCalories = eval(valCalories); // On s'assure d'avoir un nombre
     
    valLouches = document.forms['simulateur'].elements['nbrLouches'].value ;
    valLouches = eval(valLouches);  // On s'assure d'avoir un nombre
    newVal = eval(valCalories+valLouches) ;
     
     alert("Votre total est de: " + newVal + " pseudo calories pour une assiette !");
     
    }
     </script>
     
      </head>
      <body>
        <form name="simulateur">
          <p><b>Le premier simulateur de soupe !</b></p>
          <p>Mettrez-vous des pommes de terre dans votre soupe ? <br>
          <input type="radio" name="patates" value="0" checked> Oui
          <input type="radio" name="patates" value="1"> Non </p>
          <p>Mettrez-vous des carottes dans votre soupe ? <br>
          <input type="radio" name="carottes" value="0" checked> Oui
          <input type="radio" name="carottes" value="1"> Non </p>
          <p><b>Options</b></p>
          <input type="checkbox" name="courges" value="0"> Ajouter des courges ? <br>
          <input type="checkbox" name="oignons" value="1"> Ajouter des oignons ? <br>
          <input type="checkbox" name="poireaux" value="2"> Ajouter des poireaux ? <br>
          <input type="checkbox" name="sel" value="3"> Ajouter du sel ? <br>
          <p><b>Sélectionnez le nombre de louches par assiette</b></p>
          <select name="nbrLouches" size="1">
          <option value="50" id="1" selected="selected">1</option>
          <option value="90" id="2">2</option>
          <option value="130" id="3">3</option>
          <option value="185" id="4">4</option>
          <option value="245" id="5">5</option>
          <option value="280" id="6">6</option>
          </select>
          <p><input type="button" value="calculer" onclick="calculer()"></p>
        </form>
      </body>
    </html>
    Bon dev à tous

  3. #23
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valLouches = eval(valLouches);





    je confirme tu n'as pas lu mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    valLouches = +valLouches;
     ou 
    valLouches = valLouches *1 ;
    ou eventuellement un parseInt ou parseFloat

    mais pitié pas de éval pour ça !!!!!

  4. #24
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    mais pitié pas de éval pour ça !!!!!
    Désolé SpaceFrog, mais au point ou j'en suis arrivé, la pitié n'est plus de mise ! Maintenant, le premier qui touche à mon cher, à mon précieux, que dis-je ! à mon merveilleux eval(), je le mords

  5. #25
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Arf on vient encore d'en perdre un du coté obscur

    il te plait pas le + ???

  6. #26
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    il te plait pas le + ???
    Sûr qu'il me plaît pas ! Je m'en méfie comme de la peste d'un + pareil qui, selon ses humeurs, agit en & de concaténation comme d'autres langages...
    Mais bon, je veux bien faire un effort si tu m'expliques ce que ça change ?
    Ou avec un exemple du code final remanié selon tes critères pour voir la différence.
    Mais faudra me convaincre

  7. #27
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    premièrement eval te bouffe de la ressoucre inutilement

    ou
    est moins gourmand et te retourne imanquablement du numérique


    de plus eval est une porte ouverte à l'injection de javascript

  8. #28
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Bien, bien, bien, je vais réfléchir à tout cela, j'ai encore tant à apprendre...

    Bon dev à tous

  9. #29
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    @QuienSabe : eval is evil, comme la peste l’éviter tu dois. C’est une erreur que font tous les débutants, je l’ai faite moi-même (dans un autre langage certes) mais plus tôt on l’oublie mieux c’est.

    @SpaceFrog : j’ai toujours trouvé plus lisible de faire un cast, mais puisqu’on parle d’optimisation, j’ai fait un petit test :
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function speedTest( f ) {
    	var d = new Date();
    	for (var i = 1e7; i--;) {
    		f();
    	};
    	return (new Date() - d) / 1000 + 's';
    };
     
    function cast() { return Number('42') };
    function positivize() { return +'42' };
    function multiply() { return '42'*1 };

    Code console : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> speedTest(cast)
    "61.239s"
    >>> speedTest(positivize)
    "15.54s"
    >>> speedTest(multiply)
    "11.327s"

    multiply vainqueur par KO

  10. #30
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Entendu Watilin, c'est bien noté concernant eval().
    Eval ? J'ai dit "eval", comme c'est bizarre

    Merci à tous!

    PS: Y a-t-il une section "Débutants" quelque part dans le forum ?
    J'ai bien vu les tutoriels et la FAQ (qui sont très bien), mais les questions de débutants sont une mine d'enseignements pour moi (à faire, ne pas faire, éviter, à fuir, etc. en disent long)...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/05/2015, 13h14
  2. Réponses: 2
    Dernier message: 08/07/2010, 11h00
  3. Pseudo code débutant
    Par domdd dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 20/04/2009, 18h16
  4. Pseudo-frames : question de débutant
    Par Elodie2109 dans le forum Langage
    Réponses: 8
    Dernier message: 05/12/2007, 12h34
  5. [HyperFile] 2 questions de débutant
    Par khan dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 29/04/2002, 23h18

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