Il y a beaucoup de questions additionnelles de concaténation Vs sur internet, mais je ne suis pas sûr de savoir pourquoi je reçois le comportement que je suis. Je ne cherche pas à "ajouter" des chaînes évidentes et j'ai essayé parseInt
et parseFloat
sur toutes les valeurs en vain. J'ai besoin d'obtenir la valeur d'un attribut data-page
qui contiendrait une représentation de valeur numérique (je réalise probablement comme une chaîne implicite). Je remarque que tant que je reçois une valeur de l'attribut data-page
, je ne peux pas effectuer d'ajout sur les variables. Si je le remplace par un 1
codé en dur, tout fonctionne bien. Les valeurs doivent toujours être des entiers, mais j'ai essayé parseFloat
pour voir si j'avais le même comportement. Ce que j'ai fait.Addition JavaScript inhabituelle Vs Comportement de concaténation
Voici un exemple de code. Supposons $("#pagination").attr('data-page').trim()
évalue à 1
.
//Tried parseFloat
//datapage = 1 //This works as expected
dataPage = parseFloat($("#pagination").attr('data-page').trim()); //This does not work as expected
curPage = (parseFloat(dataPage) + parseFloat(1));
console.log(curPage); //Outputs '11' instead of '2'
//Tried parseInt
//datapage = 1 //This works as expected
dataPage = parseInt($("#pagination").attr('data-page').trim());
curPage = (parseInt(dataPage) + parseInt(1));
console.log(curPage); //Outputs '11' instead of '2'
Pourriez-vous également publier le code HTML? Vos deux exemples fonctionnent très bien pour moi. –
Je pense que le code ** sans ** le 'parseFloat' et' parseInt' ne fonctionne pas. Cela devrait fonctionner, de toute façon pourquoi vous appelez 'parseFloat' et' parseInt' 2 fois? –
@MarioAlexandroSantini J'appelle parseFloat/parseInt deux fois pour la redondance pour m'assurer que je reçois ce que je pense obtenir. Normalement, je ne le ferais pas dans le code de production. –