2017-01-19 14 views
3

Google Chromeバージョン54.0.2840.100(64ビット)で次のコードを実行しました。ユーザーが正しい答えを入力するまで入力を求める警告ダイアログが表示されますが、閉じるのではなくアラートダイアログで閉じるボタンまたはキャンセルボタンをクリックすると、入力を求めるメッセージが表示され続けます。タブはunclickable.Neverthelessクロムのメインウィンドウを閉じることができますが、これを修正するコードがあります。アラートダイアログを閉じることができません

var answer = Number(Math.floor(Math.random()*10)); 

do{ 
    var number = Number(prompt("Guess a number")); 
    if(number-answer >10){ 
     alert("Too big!!"); 
    } 
    else if(number-answer < 10 && number>answer){ 
     alert("It's bigger, but you are close!"); 
    } 
    else if(answer-number < 10 && number<answer){ 
     alert("It's smaller, but you are close!"); 
    } 
    else if(answer-number > 10){ 
     alert("Too small!!"); 
    } 
    else if(number==answer){ 
    alert("You WIN !!"); 
    break; 
    } 
}while(number!=answer); 
+1

あなたのコードは、「あなたのWin」の警告が表示されるので、場合を除き、これはあなたが> 10数-答えが大きすぎる報告一つの場所がある –

+0

に行くと、それはあまりにもここで別ますながらやるの下にあります小さい。ちょうど私があなたに知らせると思った。 – arame3333

答えて

2

最も簡単で簡単な答えは、do...whileループを削除することです。あなたが正しい答えを入力するまでコードを実行し続けるでしょう。

入力された番号がヌルであればそれをチェックし、それ以外の場合は番号に変換してループを実行することができます。

nullのチェックをじかにクリックcancelは、入力値がnullになり、その後、Number(null)0 .Unlessなります推測数は0であれば、それは簡単すぎ

var answer = Number(Math.floor(Math.random()*10)); 

do{ 
    var number = prompt("Guess a number"); 
    if(number!=null){ 
     number = Number(number); 
    } else { 
     break; 
    } 
    if(number-answer >10){ 
     alert("Too big!!"); 
    } 
    else if(number-answer < 10 && number>answer){ 
     alert("It's bigger, but you are close!"); 
    } 
    else if(answer-number < 10 && number<answer){ 
     alert("It's smaller, but you are close!"); 
    } 
    else if(answer-number > 10){ 
     alert("Too small!!"); 
    } 
    else if(number==answer){ 
    alert("You WIN !!"); 
    break; 
    } 
}while(number!=answer); 
0

ユーザーがプロンプトをキャンセルしたかどうかを確認するコード行を追加しました。プロンプトを閉じるに

var answer = Number(Math.floor(Math.random()*10)); 

do{ 
    var number = Number(prompt("Guess a number")); 

    // Add the below code to check for null and exit 

    if (number === null)break; 

    // END 

    if(number-answer >10){ 
     alert("Too big!!"); 
    } 
    else if(number-answer < 10 && number>answer){ 
     alert("It's bigger, but you are close!"); 
    } 
    else if(answer-number < 10 && number<answer){ 
     alert("It's smaller, but you are close!"); 
    } 
    else if(answer-number > 10){ 
     alert("Too small!!"); 
    } 
    else if(number==answer){ 
    alert("You WIN !!"); 
    break; 
    } 
}while(number!=answer); 
1
var answer = Number(Math.floor(Math.random()*10)); 

do{ 
    var number = Number(prompt("Guess a number")); 
    if(number === 0){ // this check is needed 
     break; 
    } 

    if(number-answer >10){ 
     alert("Too big!!"); 
    } 
    else if(number-answer < 10 && number>answer){ 
     alert("It's bigger, but you are close!"); 
    } 
    else if(answer-number < 10 && number<answer){ 
     alert("It's smaller, but you are close!"); 
    } 
    else if(answer-number > 10){ 
     alert("Too small!!"); 
    } 
    else if(number==answer){ 
    alert("You WIN !!"); 
    break; 
    } 
}while(number!=answer); 

、nullが故に0のチェックが追加された0

を返しますNumber関数にnullを渡す

を返され

あなたも修正することができますユーザからの入力として0を許容するために以下のようにコードする。

var input= prompt("Guess a number"); 
if(input === null){ 
    break; 
} 

var number = Number(input); 
    ... rest of the code 
1

入力として0をチェックするためになるだろう警告ダイアログは閉じられません。

キャストする前に入力値がnullであることを確認してください。

Window.prompt()

関連する問題