2016-12-27 5 views
0

これは機能するシンプルなJSの例です。少し改善するつもりです。
私はJSの初心者です。私はここで私の頭の中で踏み込んでいないことを願っています。関係なく、ユーザーが入力した回数、:希望の値が入力されるたびにプロンプ​​トが表示される方法

var color1 = prompt("Enter first color: yellow, red or blue"); 
var color2 = prompt("Enter second color: yellow, red or blue"); 

if (color1 == "yellow" && color2 == "yellow"){ 
     console.log("mixing of these two colors makes yellow"); 
    } 
if (color1 == "red" && color2 == "red"){ 
     console.log("mixing of these two colors makes red"); 
    } 
if (color1 == "blue" && color2 == "blue"){ 
     console.log("mixing of these two colors makes blue"); 
    } 
if (color1 == "yellow" && color2 == "red" || color1 == "red" && color2 == "yellow"){ 
     console.log("mixing of these two colors makes orange"); 
    } 
if (color1 == "yellow" && color2 == "blue" || color1 == "blue" && color2 == "yellow"){ 
     console.log("mixing of these two colors makes green"); 
    } 
if (color1 == "blue" && color2 == "red" || color1 == "red" && color2 == "blue"){ 
     console.log("mixing of these two colors makes purple"); 
    } 

は、私は何をしたい最初のプロンプトが適切に(正確に)なるまで(黄色、赤、青である)入力された2番目のプロンプトが表示できるようにすることではないではありません「間違った」値。
私は「while」を使用する必要があることを知っていますが、どうしたらよいか分かりません。さまざまなアプローチで数回試してみましたが、望みの結果を得ることはできませんでした。
同様の問題を持つスレッドを試しましたが、この特定の問題の解決策を見つけることができませんでした。
ご意見やご提案は大歓迎です。
ありがとうございます。

+0

whileループを使用して、color1の値を配列に格納されている固定値と比較します。 –

+0

whileループを疲れた場所の例を表示する必要があります。です。 –

+0

あまりにも複雑すぎるものではありませんが、ここではちょっとしたスニペットがあります:https://jsfiddle.net/8spbqfwn/2/。ここでは、color1とcolor2の両方が設定され、以前宣言されたリスト(配列)に存在するまでループしているので、色を間違えた場合、または色を教えない場合は、色のプロンプトが何度も繰り返されます。 – briosheje

答えて

2

使用

var colors = ["red","yellow","blue"]; 
var color1 = prompt("Enter first color: yellow, red or blue"); 
while(colors.indexOf(color1)==-1){ 
    color1 = prompt("Enter first color: yellow, red or blue"); 
} 
var color2 = prompt("Enter second color: yellow, red or blue"); 
+0

さらにコードを最適化することができます: 'var color1; color1 = prompt( "最初の色を入力する:黄色、赤色または青色"); while(!['red'、 'yellow'、 'blue'] indexOf(color1)){ } var color2 =プロンプト(「2番目の色を入力:黄色、赤色または青色」); – rabelloo

+0

Aditya Kさん、ありがとう、これは私が探していたものです。
btw繰り返しプロンプトがjsbinでは動作しませんが、codepenではうまく動作します:/ – oberknezev

0

の下に表示のようなループは、これを試してみてくださいながら:

var allowedColors = ['yellow', 'red', 'blue']; //we create array of valid input 

var color1 = ''; // initial value is not correct, so user is prompted at least once. 

var color2 = ''; 

while(allowedColors.indexOf(color1) === -1){ 

    color1 = prompt("Enter first color: yellow, red or blue"); 

} 

while(allowedColors.indexOf(color2) === -1){ 

    color2 = prompt("Enter second color: yellow, red or blue"); 

} 
0

私はこのようにそれを行うだろうより多くの時間として使用されるように

function getUserInput(n) { 
    let color; 
    while (!(color=="red" || color=="yellow" || color=="blue")) { 
    color=prompt("Enter "+n+". color (red, yellow or blue):"); 
    } 
    return color; 
} 

var c1=getUserInput(1), 
    c2=getUserInput(2); 
0

も機能させることができ、whileループを使用します。

var valid_colors = ['yellow', 'red', 'blue']; 
var color1; 
var color2; 

color1 = prompt("Enter first color: yellow, red or blue"); 

while (!~valid_colors.indexOf(color1)) { 
    color1 = prompt("Enter first color: yellow, red or blue"); 
} 

color2 = prompt("Enter second color: yellow, red or blue"); 

while (!~valid_colors.indexOf(color2)) { 
    color2 = prompt("Enter second color: yellow, red or blue"); 
} 

//... continue with your code 
関連する問題