Je crée un Q & Un site qui permet aux utilisateurs de voter sur les réponses. J'ai mis project.problem.upVoted à une liste de réponses que l'utilisateur a déjà upvoted. Si la réponse est déjà votée, le rappel de l'événement click de la flèche upvote devrait supprimer le vote en cours, et s'il n'a pas déjà été voté, il devrait voter pour celui-ci.Pourquoi cette expression est-elle toujours fausse?
est ici la fonction de rappel pour mon image uparrow:
project.problem.upVoteCallback = function(event)
{
var answerID = $(this).parents("div.answer").find("input.answerID").attr("value");
var isUpVoted = $.inArray(answerID, project.problem.upVoted) > -1;
//some debug statements
alert("id: " + answerID + " | upvoted: " + project.problem.upVoted);
alert("isupvoted: " + isUpVoted);
if(isUpVoted)
{
//delete vote
}
else
{
//cast upvote
}
}
Le problème est que isUpVoted est toujours faux. Par exemple, sur ma page de test, lorsque je tente de supprimer un vote je reçois cette sortie:
id: 91 | upvoted: 91,92,93
isupvoted : false
Cependant, si je copie le prédicat à la console js de chrome tout en substituant answerID 91 il évalue true:
$.inArray(91, project.problem.upVoted) > -1;
true
est $ .inArray (answerID, project.problem.upVoted) renvoyant 0 comme prévu? Vous devriez essayer de faire parseInt (answerID), cela pourrait être une chaîne de caractères. – drewblaisdell
Oui, voir ce que cet appel de fonction renvoie – Claudiu
L'utilisation de parseInt sur answerID l'a corrigé. Merci! :) – Jackie