Partage
  • Partager sur Facebook
  • Partager sur Twitter

Addition de nombres de champs retourne Nan

Sujet résolu
    10 décembre 2018 à 22:48:43

    Bonsoir, j'essais désespérément de pouvoir ajouter un nombre à une variable que je définis comme suit :


    <input name="ptransport" id="ptransport" required="required" type="radio" onclick="document.getElementById('supp').innerHTML = '20'">



    (il y a d'autres type radio mais c'est pas nécessaire de tout montrer)

    Jusque là tout va bien, lorsque je clique, ça affiche bien dans ma variabel "20". Cependant, dans un script j'y fais appel pour l'additionner et j'obtiens un NaN (signifiant que ce n'est pas un nombre). L'erreur vient de l'ajout de cette nouvelle variable (supp) car avant tout fonctionnait. Alors oui je mélange du JS et du Jquery, me criez pas dessus, c'est quelqu'un qui m'a aidé qui s'y connaissait mieux la dedans. :honte:

    Voilà mon script (j'ai tronqué la partie qui n'est pas concernée) :

    var supp=parseFloat($("supp"));             //je récupère ma variable que je mets en float
    dernierprix = dernierprix.toFixed(2) + supp;     //je l'ajoute à mon autre variable
    $("#dernierprix").val(dernierprix);              //je suis pas sur mais je crois que c'est pour préparer à renvoyer la valeur
    return [dernierprix]                             //je renvois mon autre variable dans la case

    Je pense que l'erreur vient surtout de la façon dont je paramètre la variable "supp" mais je ne suis pas sûr. Normalement, selon moi, il serait évident que le parseFloat le transforme en flottant, c'est pourquoi je butte un peu. Si vous connaissez une façon de faire ou de contourner ce souci, je suis preneur.

    Merci d'avance pour vos réponses  :)



    -
    Edité par Antoine Dro 11 décembre 2018 à 18:43:06

    • Partager sur Facebook
    • Partager sur Twitter
      11 décembre 2018 à 3:44:27

      fait un type off de tte tes variables pour savoir laquelle bug il y en a forcément une qui n'est pas un nombre . sans voir la totalité du code et ses valeurs difficile de t'aider. au cas ou tu est bien au courant que var x = '20'; et var x = 20; ce n'est pas la même chose hein . bonne chance ;-)


      '
      • Partager sur Facebook
      • Partager sur Twitter
        11 décembre 2018 à 7:23:11

        Bonjour,
        JQuery c'est du JS.

        Dans ton code ceci : $("supp")
        Signifie que tu souhaite récupérer un ou plusieurs élément HTML <supp/> (d'après le contenu de ton sélecteur).
        Or, un sélecteur va retourner un objet jQuery qui contient tous les éléments qui ont satisfait le sélecteur, et s'il n'y en a aucun cela vaudra null.

        Utilisez parseFloat sur le résultat de cette fonction JQuery te retournera toujours NaN car au mieux la fonction parseFloat vas tenter de "convertir" un String du style <supp/> ou mieux de "convertir" un null.

        Edit: Je t'invite a lire ce cour sur les sélecteur JQuery pour savoir sélectionner correctement l'élément du DOM que tu souhaite réellement "traiter".

        Ensuite, une fois le bon élément sélectionner, tu peut utiliser .val() pour récupérer la valeur d'un input. Ou, .text() pour récupéré le contenu textuel de l'élément. Ou encore, .attr(attribut) pour récupéré la valeur de l'attribut qui t'intéresse.

        Edit(bis): Si ton sélecteur retourne plusieurs résultat, par défaut certaine fonction ne s'exécuterons que sur la première occurrence tandis que d'autre bouclerons d'elle même pour parcourir tout les éléments (ce qui n'est pas forcement le résultat souhaiter).
        Il est possible d'affiner le résultat (si tu veut que seul la 4éme occurrence soit "lu" par exemple) avec .eq(Int).

        -
        Edité par Angelisium 11 décembre 2018 à 13:30:02

        • Partager sur Facebook
        • Partager sur Twitter

            !

          11 décembre 2018 à 8:22:23 - Message modéré pour le motif suivant : La demande de l'équipe de modération a été honorée


          Pas d'aide concernant le code par MP, le forum est là pour ça :)

            11 décembre 2018 à 18:44:46

            JonathanPruvost1 a écrit:

            fait un type off de tte tes variables pour savoir laquelle bug il y en a forcément une qui n'est pas un nombre . sans voir la totalité du code et ses valeurs difficile de t'aider. au cas ou tu est bien au courant que var x = '20'; et var x = 20; ce n'est pas la même chose hein . bonne chance ;-)

            '

            Alors, j'ai changé en x = 20, mais maintenant je me retrouve avec ça dans mon champ "dernierprix" quand je laisse var supp = $("#supp").value;  :

            function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}

            Et quand je mets pas le .value, j'ai ça :

            [object Object]

            La je n'y comprends rien :'(

            -
            Edité par Antoine Dro 11 décembre 2018 à 18:50:24

            • Partager sur Facebook
            • Partager sur Twitter
              11 décembre 2018 à 18:57:44

              Essaye avec la fonction .val() pour voir ?
              Edit: $('#supp').val()

              -
              Edité par Angelisium 11 décembre 2018 à 18:58:33

              • Partager sur Facebook
              • Partager sur Twitter

                  !

                11 décembre 2018 à 19:07:45

                C'est bon j'ai régler le souci, j'ai changé de façon d'écrire j'ai mis :

                var supp = parseInt(document.getElementById( "supp" ).innerHTML);

                et aussi je pense que l'erreur venait de l'addition :

                J'appliquais un .toFixed mais en fait je devais appliquer mon addition avant.

                Merci en tout cas ;)

                Bonne soirée à vous

                -
                Edité par Antoine Dro 11 décembre 2018 à 19:45:17

                • Partager sur Facebook
                • Partager sur Twitter
                  12 décembre 2018 à 13:07:23

                  juste comme ca l'API query est lente et n'est plus très utile .. penche toi sur l ' API selector qui est aussi simple est bien plus performante que jquery. voila bon courage pour la suite.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Addition de nombres de champs retourne Nan

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown