La conversion de la chaîne de numéro un en javascript/jQuery
Été d'essayer de convertir le suivant au numéro:
<button class="btn btn-large btn-info" data-votevalue="1">
<strong>1</strong>
</button>
var votevalue = parseInt($(this).data('votevalue'));
J'ai aussi essayé de Number()
mais je suis encore en train NaN
lors de la vérification du résultat. Ce que je fais mal?
Voici le code complet:
<div class="span7" id="button-group">
<div class="btn-group">
<button class="btn btn-large btn-info" data-votevalue="1"><strong>1</strong></button>
<button class="btn btn-large btn-info" data-votevalue="2"><strong>2</strong></button>
<button class="btn btn-large btn-info" data-votevalue="3"><strong>3</strong></button>
<button class="btn btn-large btn-info" data-votevalue="4"><strong>4</strong></button>
<button class="btn btn-large btn-info" data-votevalue="5"><strong>5</strong></button>
<button class="btn btn-large btn-info" data-votevalue="6"><strong>6</strong></button>
<button class="btn btn-large btn-info" data-votevalue="7"><strong>7</strong></button>
<button class="btn btn-large btn-info" data-votevalue="8"><strong>8</strong></button>
<button class="btn btn-large btn-info" data-votevalue="9"><strong>9</strong></button>
<button class="btn btn-large btn-info" data-votevalue="10"><strong>10</strong></button>
</div>
</div>
$('#button-group button').each(function() {
$(this).click(function() {
$(this).addClass('active');
var votevalue = parseInt($(this).data('votevalue'));
var filename = $('.mainimage').data('filename');
var votes = parseInt($('.mainimage').data('numvotes'));
var totalscore = parseInt($('.mainimage').data('totalscore'));
$.ajax({
type: 'POST',
url: 'index.php/?category=vote',
data: {
"votevalue": votevalue,
"filename": filename
},
success: function() {
votes++;
alert(votes);
var average = ((totalscore + votevalue) / votes);
$('#vote-incremenet').html(votes);
$('#display-average').html(average);
$('#display-average').show();
$('#button-group button').each(function(){
$(this).unbind('click');
});
}
}); //end ajax
}); //end click
}); //end each
- Ce n'
this
consultez dans ce contexte? - Ce que vous avez fonctionnera très bien, donc je ne peux que supposer que
this
ne se réfère pas à ce que vous attendez. Aussi, n'oubliez pas la base de l'argument deparseInt
! - voulez-vous la valeur des données-votevalue propriété ou le texte à l'intérieur de la <strong></strong> balises?
Vous devez vous connecter pour publier un commentaire.
Il sonne comme
this
dans votre code n'est pas allusion à votre.btn
élément. Essayez de référence explicitement à l'aide d'un sélecteur:Aussi, n'oubliez pas le radix.
parseInt(votevalue)
section fonctionne très bien: jsfiddle.net/fVJRLVous pouvez utiliser parseInt(string, radix) pour convertir la chaîne de valeur à l'entier tel que ce code ci-dessous
DÉMO
Bien que c'est un vieux post, j'ai pensé qu'une simple fonction peut rendre le code plus lisible et maintient avec jQuery chaînage de code de style:
peut être utilisé avec jQuery:
ou avec toute
String
objet:Vous devriez utiliser "+" avant de
$(this)
. Qui va convertir la chaîne en nombre, afin de:Oh, et je vous recommande d'utiliser
closest()
méthode juste au cas où 🙂closest()
,Il sonne comme
this
se réfère à quelque chose d'autre que vous ne le pensez. Dans quel contexte utilisez-vous?La
this
mot-clé est généralement utilisé uniquement à l'intérieur d'une fonction de rappel d'un gestionnaire d'événements, lorsque vous passez en boucle sur un ensemble d'éléments, ou similaire. Dans ce contexte, il se réfère à une DOM-élément, et peuvent être utilisées de la façon dont vous le faites.Si vous voulez seulement l'accès à ce même bouton (à l'extérieur d'un rappel ou d'une boucle) et n'ont pas d'autres éléments que l'utilisation de la
btn-info
classe, vous pourriez faire quelque chose comme:Vous pouvez également affecter l'élément d'ID, et l'utiliser pour sélectionner on, qui est probablement un moyen plus sûr, si vous voulez être sûr qu'un seul élément correspondent à votre sélection.
Vous pouvez ajouter un
+
avant que la chaîne sans utiliser parseInt et parseFloat et radix, il suffit deexemple:
Pour votre cas, il suffit d'utiliser:
Il y a quelques façons de convertir une chaîne de numéro un en javascript.
La meilleure façon:
Vous pouvez également:
ou
N'EST PAS LE CAS:
Utiliser parseInt seulement pour des cas spéciaux, par exemple
var chaine = 123 (string),
parseInt(paramètre est une chaîne);
var votevalue = $.map($(this).data('votevalue'), Number);