2016-08-18 72 views
0

我在javascript全新的字符串值,不知道爲什麼我沒有線在這裏工作,這裏的情況是:的javascript:if語句比較不工作

我寫了一個非常簡單的猜謎遊戲,其中用戶必須從單詞列表中猜測隨機生成的單詞。

我不知道爲什麼代碼是不是比較用戶的輸入,看是否是從列表或沒有?

預先感謝您:)

var target_index; 
    var guess_input_text; 
    var finished=false; 
    var number_of_guesses = 0; 
    var colors = ["pink", 'olive', 'lime', 'orange', 'yellow', 'purple', 'indigo', 'blue', 'gray', 'black']; 
    var guesses = 0; 
    var color; 


    function do_game() { 
     var random_number = Math.random()*9; 
     var random_number_intiger = Math.floor(random_number); 
     target_index = random_number_intiger; 
     color = colors[target_index]; 
     alert(color); 

     while (!finished){ 
     guess_input_text = prompt('I am thinking of one of these colors.\n\n' + colors + '\n\n What do you think it is?'); 
     guesses++; 
     alert(guess_input_text); 
     finished = check_guess(); 
    } 
} 

    function check_guess(){ 
     if (guess_input_text===color){ //this works 
     return true; 
     } 
     if (guess_input_text!=color && guess_input_text!=colors){ //why this is not working :(
     alert('Please choose your color among the colors listed below:\n\n' + colors); 
     return false; 
     } 
     if (guess_input_text!=color && guess_input_text==colors){ //this is not working too 
     alert('You are a bit off'); 
     return false; 
     } 
} 
+0

你不能用一個數組'colors'比較字符串'guess_input_text'。它永遠是不平等的。 – 4castle

回答

2

我看見你在功能do_game()

function do_game() { 
    var random_number = Math.random()*9; 
    var random_number_intiger = Math.floor(random_number); 
    target_index = random_number_intiger; 
    color = colors[target_index]; 
    alert(color); 

    while (!finished){ 
    guess_input_text = prompt('I am thinking of one of these colors.\n\n' + colors + '\n\n What do you think it is?'); 
    guesses++; 
    alert(guess_input_text); 
    finished = check_guess(); 
    }//Add here 
} 

變化失去了 '}':

if (guess_input_text!=color && guess_input_text!=colors)

if (guess_input_text!=color && guess_input_text==colors)

到:

if (guess_input_text!=color && colors.indexOf(guess_input_text) < 0)

if (guess_input_text!=color && colors.indexOf(guess_input_text) >= 0)

+0

OP進行了編輯。這只是一個錯字。 – 4castle

+0

謝謝,但這不是問題! – ArdMir

+0

我更新了我的答案,檢查它。 –

0

主要問題,我看到的是,你是一個字符串值,這裏guess_input_text!=colors比較數組。由於用戶輸入的字符串永遠不會等於顏色數組,因此這將始終評估爲真。這意味着,只要用戶輸入的顏色與隨機顏色不匹配,即使他們選擇了陣列中的顏色,他們也會得到「請在下面列出的顏色中選擇您的顏色」。

你需要做的是,如果由用戶輸入的字符串數組中存在檢查。你能做到這一點的方法之一是改變

if (guess_input_text!=color && guess_input_text!=colors){ //why this is not working :(

if (guess_input_text!=color && colors.indexOf(guess_input_text)>=0){ //this will work if your browser/platform supports it :) 

的indexOf如果不能提供給你,還有其他方法可以做到這一點。

你的最後一個條件是多還是少不必要的,因爲你已經知道,顏色不等於隨機的顏色,它是在數組中。所以它可以被省略,並且您可以隨時發出您的最終警報命令。

+0

感謝@Wake對你的清晰解釋,我更換了你的行瀏覽器後沒有運行! – ArdMir

+0

@Ardavan,可能是您的瀏覽器不支持indexOf,或者存在其他問題。看到這篇文章的indexOf和其他方式可以檢查你的guess_input_text字符串是否包含在你的顏色數組中的更多細節:http://stackoverflow.com/questions/237104/how-do-i-check-if-an-array - 包括-AN-對象中的JavaScript – Wake