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 № 1Vous 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();
});