2017-08-29 1 views
0

次のスクリプトの目的は、ユーザーが間違って答えた(値として間違ったパスワードを入力した)試行回数を数えることです。 "試行"変数が0から2になった後、エラー変数は1になり、ユーザーはフォームのWebページから移動します。変数への追加は条件境界に達しますが、条件付き動作は行われません

私はそのプロセスのフローを確立するために条件を使用しようとしましたが、間違ったパスワードがユーザーをサイトから奪われず、正しいパスワードが認識されないという意味で失敗するようです。

私は論理的なミスをしているようですが、今は見つからないかもしれないし、酸っぱいと感じます。

初心者として、条件付きシステムで何が問題なのですか?あなたが0にtriesをintializingている機能で

<!DOCTYPE HTML> 
 
<html> 
 
\t <head> 
 
\t </head> 
 
\t <body> 
 
\t \t <form> 
 
\t \t Enter password to continue: <br> 
 
\t \t <input type="text" id="user"/> 
 
\t \t <input type="button" id="myButton" value="Enter site"/> 
 
\t \t </form> 
 

 
\t \t <script> 
 
\t \t \t document.querySelector("#myButton").onclick = function() { 
 
\t \t \t \t let tries = 0; 
 
\t \t \t \t let error = 0; 
 
\t \t \t \t let password = 'tiesto'; 
 
\t \t \t \t let passwordValue = document.querySelector("#user").value; 
 

 
\t \t \t \t if (passwordValue === password) { 
 
\t \t \t \t \t document.location = 'http://www.maariv.co.il'; 
 
\t \t \t \t } else { 
 
\t \t \t \t \t tries++; 
 
\t \t \t \t \t alert('Try again please.'); 
 
\t \t \t \t } 
 

 
\t \t \t \t if (tries === 2) { 
 
\t \t \t \t \t error++; 
 
\t \t \t \t } 
 

 
\t \t \t \t if (error === 1) { 
 
\t \t \t \t \t document.location = 'http://www.microsoft.com'; 
 
\t \t \t \t } 
 
\t \t \t }; 
 
\t \t </script> 
 
\t </body> 
 
</html>

+0

パスワードロジックが、ここで懸念されます。あなたはデータベースに対してテストする必要があります。 '!==' – PHPglue

+0

ええと、これは私が持っていた運動の結果です。比較が肯定的であり、パスワードの場合に否定的でない場合、それがなぜ問題であるかを精緻化することに感謝しますか?私にとっては、「2つの要素が一致している場合は、何かしてください」と言いますが、なぜこの問題があるのか​​を教えてください。 – sangoko

答えて

0

DijとEvelyn Maのおかげで、私は間違いを理解するようになりました。

私はので、これらは、関数の実行によって変更されることはありません0に設定されたすべての変数または機能のうち、文字列を取っnecessites(などのonloadなど)イベントで機能を呼び出す実現しませんでした

イベントがトリガされ、関数が実行されるたびに、関数内で宣言されている場合は値がリセットされ、条件に設定されたレベルには決して達しません。

例:varが関数の外側で0に設定されていると、ユーザーはたとえば3回試行するまで試行でき、varはリセットされませんが、関数内にあればそれぞれ1〜0が試行されます。

私はまた、コード内で2つの他の無関係のミスだった:外0に設定されたすべての変数または文字列を移動する以外に

  1. を、私はそれが改めてたびに値だチェックするquerySelector内部を含める必要がありました。

  2. 私はリターンを特定の正しい方法で使用しませんでした。

注:パスワードは、コード上ではありませんが、データベースから呼び出すことが、これは単なる運動です。ここで

は完全な作業行使コードです:

<!DOCTYPE html> 
<html> 
    <body> 
     <form id="myForm"> 
     Enter password to continue: <br> 
      <input type="text" id="passwordInput"/> 
      <input type="button" id="myButton" value="Enter site"/> 
     </form> 
     <script> 
      let tries = 0; 
      let error = 0; 
      let password = 'tiesto'; 

      document.querySelector("#myButton").onclick =()=> { 

       let passwordInput = document.querySelector('#passwordInput').value; 

       if (password === passwordInput) { 
        return window.location.href = 'http://maariv.co.il'; 
        } else { 
         tries++; 
         alert('Try again please.'); 
        } 

        if (tries === 3) { // 3 is the border. 
         error++; 
        } 

        if (error === 1) { 
         window.location.href = 'http://microsoft.com'; 
        } 
       }; 
     </script> 
    </body> 
</html> 
1

、それは0たびに関数が呼び出されると、増分が1になった後、それはあなたが外triesを宣言することができる2に達することはありませんになるように機能、このような何か:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<html> 
 
<head> 
 
</head> 
 
<body> 
 
    <form> 
 
    Enter password to continue: <br> 
 
    <input type="text" id="user"/> 
 
    <input type="button" id="myButton" value="Enter site"/> 
 
    </form> 
 

 
    <script> 
 
     let tries = 0; 
 
     document.querySelector("#myButton").onclick = function() { 
 

 
      let error = 0; 
 
      let password = 'tiesto'; 
 
      let passwordValue = document.querySelector("#user").value; 
 

 
      if (passwordValue === password) { 
 
       document.location = 'http://www.maariv.co.il'; 
 
      } else { 
 
       tries++; 
 
       alert('Try again please.'); 
 
      } 
 

 
      if (tries === 2) { 
 
       error++; 
 
      } 
 

 
      if (error === 1) { 
 
       document.location = 'http://www.microsoft.com'; 
 
      } 
 
     }; 
 
    </script> 
 
</body> 
 
</html>

1

let tries = 0;をonclick関数に入れると、毎回0に設定され、2に達することはないので、関数から移動させてください。

 let tries = 0; 
     document.querySelector("#myButton").onclick = function() { 
      let error = 0; 
      let password = 'tiesto'; 
関連する問題