2014-05-08 28 views
0

我有兩個變量totalGuess和condensedAnswer。我正在創建一個jQuery點擊事件,如果totalGuess不等於condensedAnswer,那麼點擊事件不會發生,並且一個名爲message的div將顯示消息「對不起,但您的答案不正確,請重試。」javascript變量總是不相等

問題是,total語句在if語句永遠不會等於condensedAnswer。我試着看到typeof,它們都是字符串。我試過console.log(totalGuess +「\ n」+ condensedAnswer);他們都返回相同的價值。我試過對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

+0

這是一個可怕的做法,它幾乎肯定會失敗*很多*。您將所有輸入值相加並與一個字符串進行比較,在該字符串中,您爲一個輸入刪除了所有空格,一個字符或錯誤位置的空格,並且失敗。 – adeneo

+0

適用於我:http://jsfiddle.net/8wndm/輸入'foobarbar'並且猜測是正確的。問題可能在其他地方,或者與您未顯示的代碼有關。 –

+0

@ adeneo它基本上是一個縱橫字謎...它是從文本框中建立一個字符串。 – epascarello

回答

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

刪除後面的逗號,它會神奇的工作。

+0

@espascarello非常感謝!我把它改成了'var condensedAnswer = answer.replace(new RegExp(「」,「g」),「」).replace(「\ 0」,「」);'這就實現了。 – Sue

+0

或者你可以用尾隨的逗號解決真正的問題;) – epascarello

+0

哦,或許試圖去掉尾隨逗號將是更好的解決方案。我會更多地關注它。再次感謝! – Sue