Pourquoi quand j'utilise ceci: (en supposant que je = 1)
divID = "question-" + i+1;
Je reçois la question 11 et non la question 2 ?
Pourquoi quand j'utilise ceci: (en supposant que je = 1)
divID = "question-" + i+1;
Je reçois la question 11 et non la question 2 ?
Utilisez ceci à la place:
var divID = "question-" + (i+1)
C'est un problème assez courant et ne se produit pas seulement en JavaScript. L'idée est qu' +
peut représenter à la fois la concaténation et plus.
Depuis l'opérateur + seront traitées de gauche à droite les décisions dans votre code ressemble à ceci:
"question-" + i
: depuis "question-"
est une chaîne de caractères, nous allons faire la concaténation, résultant en "question-1"
"question-1" + 1
: depuis "queston-1"
est une chaîne de caractères, nous allons faire la concaténation, résultant en "question-11"
.Avec "queston-" + (i+1)
, c'est différent:
(i+1)
est dans la parenthèse, sa valeur doit être calculée avant la première +
peut être appliquée:
i
est un chiffre, 1
est numérique, donc nous allons faire plus, résultant en 2
"question-" + 2
: depuis "question-"
est une chaîne de caractères, nous allons faire la concaténation, résultant en "question-2"
.Utiliser seulement:
divID = "question-" + parseInt(i) + 1;
Lorsque "n" provient du champ de saisie html ou est déclaré en tant que chaîne, vous devez utiliser une conversion explicite.
var n = "1"; //type is string
var frstCol = 5;
lstCol = frstCol + parseInt(n);
Si "n" est un entier, vous n'avez pas besoin de conversion.
n = 1; //type is int
var frstCol = 5, lstCol = frstCol + n;
Puisque vous concaténez des nombres sur une chaîne, le tout est traité comme une chaîne. Lorsque vous souhaitez additionner des nombres, vous devez le faire séparément, puis l’affecter à une variable et l’utiliser, comme ceci:
i = i + 1;
divID = "question-" + i;
Ou vous devez spécifier l'ajout du numéro comme ceci:
divID = "question-" + Number(i+1);
divID = "question-" + parseInt(i+1,10);
vérifiez ici , c'est un JSFiddle
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.