Exo simple qui pose pblm en javascript

Salut a tous.
En fait je révise le JavaScript language que j essaie de comprendre mais qui me pose d'énorme probléme.Les poly qu'on nous fourni en cours sont bad et j dois avoir le cerveau lent.lol
Mais la je dois écrire un programme JavaScript qui lit et additionne n nombre.

<html>
<head>
<title>Calcul la somme de n nombre</title>
<script language='JavaScript'>
var nbval = prompt('entrer le nombre de valeur : ');
var i=0;
var r=0;
var x=0;
while(i != nbval)
{
x=prompt('entrer un nombre : ');
i=i+1;
r=(r+x);
}
alert('la somme des n nombres est : '+r);
</script>
</head>
<body>

</body>
</html>
j ai fait sa mais le probléme que j essaie de résoudre, c'est qu'il ne me les aditionne pas, il les mets juste cote à cote.
Help me please...
Merci d'avance.

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Salut,

    La somme (fontion +) représente ici une concatenation car les valeurs saisie sont sous forme de chaine de caracteres (string).
    Essayes avec r = r + x.valueOf( );

    Un bon site regroupant mal de choses sur Javascript :
    http://www.toutjavascript.com/

    DaNot
    un Libre ouvert à la source...
    1. Modérateur
      Quand tu fais:
      x=prompt('entrer un nombre : ');
      -> Je crois que x devient chaine de caractere dans l'operation...
      Du coup, quand tu "ajoutes" x à r, il concatenes les chaines.

      Dans la ligne ou tu additionnes r= (r+x) rajoutes une multiplication par 1:
      r=(r+x)*1

      a+
      dje-dje

      Il y a 10 types de personne dans le monde,
      ceux qui comprennent le binaire et les autres
      1. Yop,

        fait un parseInt pour transformer en entier :

        <html>
        <head>
        <title>Calcul la somme de n nombre</title>
        <script language='JavaScript'>
        var nbval = parseInt(prompt('entrer le nombre de valeur : '));
        var i=0;
        var r=0;
        var x=0;
        while(i != nbval)
        {
        x=parseInt(prompt('entrer un nombre : '));
        i=i+1;
        r=(r+x);
        }
        alert('la somme des n nombres est : '+r);
        </script>
        </head>
        <body>

        </body>
        </html>
        1. merci a vous tous ...
          je vais aller visite l'adresse DaNot, mais au niveau des fonctions j ai pas encore le niveau à mon avis, mais j vais regarder sa de plus près.
          j avais pas pensé au parsInt ni a la multiplication par 1 mais ce sont de trés bonne idée.
          Merci beaucoup pour votre aide précieuse.
          Je vais essayer de réglé le probléme desuite.
          1. SOLUTION:

            si data = 300 en string

            temp = parseInt(data);
            temp = temp + 1;

            temp = 301 en chiffre