2016-10-04 11 views
0

私はちょうど、ループを習得してから、JavaScriptを学び始めました。そうでなければ、ユーザーにその名前を尋ねる小さなプログラムを書いたかったのですが、それが空であるか、有効な名前。まず、文字列を書くと、それはhtmlに書き込まれますが、プログラムがループを実行しようとすると、有効な名前を書き込めません。私のコードは、ループの中に、有効なもののプログラムを入力した後に取得した後に動作しないのはなぜユーザーにその名前を聞いてください

var getName = prompt("What is your name? "); 
 

 

 
if (getName === null || !isNaN(getName)){ 
 

 
    while (getName !== null || isNaN(getName)){ 
 
     alert("Invalid name, please try again"); 
 
     getName = prompt("What is your name ? "); 
 
     if (getName !== null || isNaN(getName)){ 
 
      document.write("Hello ", getName); 
 
     } 
 
    } 
 
}else { 
 
    document.write("Hello ", getName); 
 
}

まだ「それは有効な名前で再度試していないのです」と言いますか?

+0

それは有効な名前を入力することではないの後に動作しません。それは無効な名前ループで固まった –

+1

あなたのwhileループが間違った条件を使用しています。あなたは、有効な名前を持っていれば、それを続行したくはありません。 '!(getName!== null || isNaN(getName))' –

答えて

1

を行うとしているときには、次の例を確認し、代わりに条件getName === null || !isNaN(getName)を使用することができます。

これが役に立ちます。

var getName = null; 
 

 
while (getName === null || !isNaN(getName)){ 
 
    getName = prompt("What is your name ? "); 
 

 
    if (getName === null || !isNaN(getName)){ 
 
    alert("Invalid name, please try again"); 
 
    }else{ 
 
    document.write("Hello ", getName); 
 
    } 
 
}

+0

私は何かこれを最初に好きでしたが、私もそれを台無しにしました。その作品。これは私にとって本当に残念です。とにかく感謝します... –

0

これはあなたの探しているものですか?ここで

var getName = prompt("What is your name ? "); 


if (getName === null || !isNaN(getName)){ 
    while (getName !== null || isNaN(getName)){ 
     alert("Invalid name, please try again"); 
     getName = prompt("What is your name ? "); 
     console.log(getName) 
     if (getName !== null || !isNaN(getName)){ 
      document.write("Hello ", getName); 
      break; 
     } 
    } 
}else { 
    document.write("Hello ", getName); 
} 

JSFiddleLink

0
while (getName !== null || isNaN(getName)){ 
    alert("Invalid name, please try again"); 
    getName = prompt("What is your name ? "); 
    if (getName !== null || isNaN(getName)){ 
    document.write("Hello ", getName); 
    } 
} 

はのは、あなたのwhileループのためにとあなたのif文の条件を比較してみましょうで、彼らはまったく同じであるかに気づきます。文が実行された場合

ので、あなたが持っているものだから、

while(true) { 
    // do something 
    if (true){ 
    // do something 
    } 
} 

、ループが実行され、そして、真と評価の条件を言ってみましょう、しかし、あなたは、ループを終了するために何もしませんでした。この場合

、あなたはwhileループ条件が真であることにしたい文は偽、およびその逆であるので、

while(!(getName !== null || isNaN(getName))) 
0

これは、あなたが探しているものであってもよいが、ここで、あなたが探しているものを行うには再帰関数でないかもしれません。リトルビットクリーナー簡単なロジック。

function ask(){ 
 

 
name = prompt("What is your name?"); 
 
    
 
    if(name != null && isNaN(name) & name != ""){ 
 
    \t  document.write("Hello ", name); 
 
    }else{ 
 
     alert("Invalid name, please try again") 
 
     ask(); 
 
    } 
 
} 
 

 
ask();
<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
\t <meta charset="utf-8"> 
 
\t <title>test</title> 
 
\t <script type="text/javascript " src="script.js"></script> 
 
</head> 
 
<body> 
 

 

 

 
</body> 
 
</html>

関連する問題