gpt4 book ai didi

javascript - 为什么这个表达式总是错误的?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:21:40 25 4
gpt4 key购买 nike

我正在创建一个允许用户对答案进行投票的问答网站。我已将 project.problem.upVoted 设置为用户已投票的答案列表。如果答案已投票,则向上投票箭头的点击事件的回调应删除当前投票,如果尚未投票,则应投票给它。

这是我向上箭头图像的回调函数:

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
}
}

问题是 isUpVoted 总是错误的。例如,在我的测试页面上,当我尝试删除投票时,我得到以下输出:

id: 91 | upvoted: 91,92,93 
isupvoted : false

然而,如果我将谓词复制到 chrome 的 js 控制台,同时将 answerID 替换为 91,它的计算结果为 true:

$.inArray(91, project.problem.upVoted) > -1; 
true

最佳答案

当你将输入的值放入answerID时,它的类型是一个字符串,而不是一个整数。您需要将变量转换为整数,如下所示:

var isUpVoted = $.inArray(parseInt(answerID), project.problem.upVoted) > -1;

这将确保 jQuery 的 inArray 函数比较相同的数据类型,而不是比较字符串和整数。

关于javascript - 为什么这个表达式总是错误的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6459869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com