/ / J'ai une valeur NaN chaque fois que je additionne un nombre en Javascript - javascript, jquery

J'ai une valeur NaN chaque fois que je résume un nombre en Javascript - javascript, jquery

J'ai créé un bouton pour ajouter un compteur de baisers, mais je reçois un NaN valeur et je ne sais pas comment le résoudre. Pouvez-vous m'aider s'il vous plaît?

Je sauvegarde les valeurs dans LocalStorage et j'obtiens les valeurs du DOM avec jQuery. C'est ce que je fais pour enregistrer les données:

<h1>Due: <span id="counter">0</span></h1>
<a id="btn" href="javascript:void(0);">+</a>

var btn = $("#btn").click(function() {
var valor = $("#counter");
valor.text(parseInt(valor) + 1);
saveData();
});

function saveData() {
if (supportsLocalStorage()) {
var counter = $("#counter").text();
localStorage.setItem("kisses", counter);
}
}

J'obtiens une valeur NaN chaque fois que je clique sur le bouton plus.

J'ai un violon.

https://jsfiddle.net/usdjsr40/

J'espère que vous pourrez m'aider avec mon problème, merci.

Réponses:

1 pour la réponse № 1

Vous essayez d'analyser un objet afin NaN et NaN + 1 donne NaN. Alors essayez ceci:

var btn = $("#btn").click(function() {
var valor = $("#counter");
valor.text(parseInt(valor.html().trim()) + 1);
saveData();
});

function saveData() {
if (supportsLocalStorage()) {
var counter = $("#counter").text();
localStorage.setItem("kisses", counter);
}
}

1 pour la réponse № 2

Vous passez un objet html à parseInt, donc il envoie NaN.

 var valor = $("#counter");

Ici, la valeur est un élément html et non une chaîne.

Essaye ça:-

 var valor = $("#counter").text().trim();

0 pour la réponse № 3

NaN signifie pas un nombre. Vous ne chargez pas les données de $("#counter") de manière appropriée.

$("#counter") est simplement l'objet élément jQuery. Vous essayez d'ajouter le numéro un à un objet JavaScript, plutôt qu'un numéro.

Afin d'obtenir la valeur dans l'élément, vous devez l'appeler comme ceci:

$("#counter").html()

Ensuite, vous pouvez envelopper parseInt autour de lui:

parseInt( $("#counter").html() )

Vos premières lignes de code devraient donc ressembler à ceci:

<h1>Due: <span id="counter">0</span></h1>
<a id="btn" href="javascript:void(0);">+</a>

var btn = $("#btn").click(function() {
var valor = $("#counter").html();
valor.text(parseInt(valor) + 1);
saveData();
});