2016-12-06 40 views
0

我正在製作一個顏色猜測遊戲,它將讓用戶從數組中選擇一種顏色。如何只接受數組內的提示字段中的特定顏色

然後,它會將頁面顏色更改爲顏色,一旦他們正確地猜出它。

但是,輸入將接受不在數組中的隨機字母。

如何添加函數來僅接受存儲在數組中的字母。

下面是我的代碼:

var array = [ 
    "blue", "gray", "yellow", "green", "black", "cyan", "purple", "silver", 
    "orange", "lime", "magenta", "olive", "maroon", "brown", "darkblue", "lightblue" 
]; 
array = array.sort(); 
var guess_input; 
var finished = false; 
var guesses = 0; 
alert(target); 

function do_game() { 
    var target_index = Math.floor(Math.random() * (array.length - 0)) + 0; 
    var target = array[target_index]; 
    var message = "I am thinking of one of these array:\n\n"; 
    for (var i = 0; i < array.length; i++) { 
    message += array[i]; 
    if (i == (array.length - 2)) { 
     message += " and "; 
    } else if (i != (array.length - 1)) { 
     message += ", "; 
    } 
    } 
    while (!finished) { 
    guess_input = prompt(message).toLowerCase(); 
    guesses++; 
    finished = check_guess(guess_input, target); 
    if (finished) { 
     var myBody = document.getElementsByTagName("body")[0]; 
     myBody.style.background = target; 
    } 
    } 
    var myBody = document.getElementsByTagName("body")[0]; 
    myBody.style.background = target; 
} 

function check_guess(guesses, target) { 
    if (array.indexOf(guesses) < 0) { 
    return true; 
    } 
} 

回答

1

var color = ""; 
 
var colors = ["blue", "gray", "yellow"]; 
 
while(colors.indexOf(color) < 0) 
 
    color=prompt("Please enter a valid color: "+colors.join(', ')); 
 
alert('Your chosen color is: '+color);

+0

@I按倒熊一次。有沒有辦法做到這一點,而沒有提示/提示?當然是 – Coder994

+0

,但你的問題明確要求提示。 –

+0

是的,看我的回答 –

-1

你不能做到這一點與Window.prompt,因爲這是一個瀏覽器實現的機制,是非常有限的。

您可以使用輸入字段和驗證上KEYUP:

<input type="text" onkeyup="validateInput(this)" />

function validateInput(e){ 

    //check that the e.keyCode is one that you permit, return false 
} 
+0

嗨...對不起,請問爲什麼downvote? –

相關問題