2017-10-13 12 views
-1

J'ai une liste de sélection html de 0-5. Je choisis un nombre de la liste, par exemple 4, et je veux que le programme crache 5. puisque 0,1,2,3,4 est 5 nombres. Actuellement, ma boucle ne fait qu'ajouter les nombres jusqu'à 15. Quelque chose ne va pas avec la logique dans ma boucle for.Utiliser pour la boucle pour compter des nombres entiers de 0 à un nombre javascript

document.getElementById('go').onclick = function() { 
var topValue = document.getElementById('number').value; 
topValue = parseFloat(topValue); 
number = 0; 
for (n = 0; n <= topValue; n++) { 
    number = number + n; 
}; 
document.getElementById('result').value = number; 
}; 
+0

Qu'est-ce que «Quelque chose ne va pas avec la logique dans ma boucle for» signifie exactement? Pourriez-vous fournir un exemple reproductible minimal (plunker/jsfiddle)? –

+4

Peut-être que je ne lis pas correctement, mais ne voulez-vous pas simplement 'topValue + 1' alors? –

Répondre

0

Je ne sais pas si je suis votre doute correctement mais je vais essayer d'aider:

Cela se produit parce que vous ajoutez la valeur de la variable « n » à la variable « nombre » ...

Une boucle reçoit 3 choses (basiquement/simplifié):

  • sa valeur de départ
  • sa valeur maximale (où arrêter, nous sivement alors que la condition est vraie)
  • sa « vitesse » (la taille du compteur augmentera ou diminuera)

L'exécution de la boucle quand topValue est 4:

  1. Exécution 1: Numéro = (nombre + n) => (0 + 0) = 0
  2. Exécution 2: nombre = (nombre + n) => (0 + 1) = 1
  3. Exécution 3: nombre = (nombre + n) => (1 + 2) = 3
  4. Exécution 4: nombre = (nombre + n) => (3 + 3) = 6
  5. Exécution 5: nombre = (nombre + n) => (6 + 4) = 10

Si vous voulez juste compter combien de nombres existe entre zéro (inclus) et le topValue il vous suffit de mettre cela à l'intérieur de votre boucle:

number++; 
0

Si je comprends bien, vous n'avez pas besoin d'une boucle. Ce sera toujours un de plus que le nombre sélectionné.

document.getElementById('go').onclick = function() { 
    var topValue = document.getElementById('number').value; 

    topValue = parseFloat(topValue); 

    document.getElementById('result').value = number + 1; 
};