Bien vu pour Number(). Je n'ai pas rencontré ce problème sur mes tests, mais il suffit qu'une valeur soit convertie quelque part en string pour que toute l'opération soit traitée comme une chaîne de caractère. C'est un inconvénient assez pénible avec le JS...
Edit : j'ai mal lu, effectivement il y a automatiquement conversion en string si opérateur "+", c'est assez dingue si on vient de langages bien foutus tel que Python. J'efface ma proposition précédemment écrite : il faut bien un Number() par valeur (sur la totalité de l'opération c'est inopérant).
De savoir la manière dont on le consomme, c'est une affaire de goût... et de stratégie :
- si la cible ne sert pas à autre chose que de récupérer une valeur, et surtout si cette valeur est réutilisée de nombreuses fois, alors effectivement il vaut mieux traiter la valeur dès l'origine de la création de la variable :
const n1 = Number(document.getElementById('case1').value)
- dans le cas contraire, par goût, mais aussi pour une certaine lisibilité - selon moi - je formaterais les données au niveau du calcul :
result.value = Number(n1.value) + Number(n2.value)
Avec cette dernière solution et en reprenant mon dernier code sur ce topic cela donnerait ceci :
const n1 = document.getElementById('case1')
const n2 = document.getElementById('case2')
const result = document.getElementById('resultat')
;[n1, n2].map(x => x.oninput = () => result.value = Number(n1.value) + Number(n2.value))
Test en ligne :
CodePen Modifié par Olivier C (28 Jun 2023 - 23:33)