javascript变量总是不相等

时间:2014-05-08 15:45:57

标签: javascript jquery

我有两个变量,totalGuess和condensedAnswer。我正在创建一个jQuery点击事件,如果totalGuess不等于condensedAnswer那么点击事件将不会发生,并且一个名为message的div将显示消息"抱歉,但您的答案不正确。请再试一次。"

问题是,if语句中的totalGuess永远不会等于condensedAnswer。我试过看过typeof并且他们都是字符串。我已经尝试过console.log(totalGuess +" \ n" + condensedAnswer);它们都返回相同的值。我尝试过对浓缩答案进行硬编码,而且totalGuess能够等同于硬编码的答案。但是当我尝试将condensedAnswer与硬编码的答案进行比较时,它并不相同,即使condensedAnswer的console.log值相同也是如此。我不是什么错误。

以下是代码段:

$('.submitGuess').click(function(e){
    var totalGuess = "";
var condensedAnswer = answer.replace(new RegExp(" ","g"), "");
$('.crypto-input').each(function(){
    totalGuess += $(this).val();
    });
// if incorrect guess
if(totalGuess !== condensedAnswer) {
    $('.message').text("Sorry, but your answer is incorrect. Please try again.");
    e.preventDefault();
}
// if user wins, congratulate them and submit the form
else {
    return true;
}
});

如果它有帮助,这里是页面,只是Wordpress的随机测试密码插件: http://playfuldevotions.com/archives/140

1 个答案:

答案 0 :(得分:4)

问题与检查无关。问题在于您正在检查的值是否隐藏了字符。但是你得到的字符串有问题。

简单的调试显示问题

> escape(totalGuess)
"God%27sMasterpieceMatthew15%3A99Psalms129%3A158"
> escape(condensedAnswer)
"God%27sMasterpieceMatthew15%3A99Psalms129%3A158%00"

最后有一个空字符。

现在看看你如何填写答案,你有一个数字数组

"071,111,100,039,...49,053,056,"

看看最后我们有一个尾随逗号

当你进行拆分时,意味着数组的最后一个索引将是"",因此你得到一个null。

enter image description here

删除尾随的逗号,它会神奇地起作用。