2017-08-19 15 views
0

私のオブジェクトの新しいユーザーとパスワードを作成する必要がありますあなたがパスワードまたはユーザー名が同じでメッセージを表示する必要が一致しない場合は、私のユーザー名とパスワード、私の配列オブジェクトで、そのメッセージは、youreのにするには、別のUSERNAMEをご利用ください。私は、彼らが等しい場合は、その後私は、それをチェックする必要があり、私は私のテキスト入力に入力したときに、私のオブジェクトの新しいユーザー名とパスワードを作成する必要が

新しいパスワード&のユーザー名を作成するときに、それを入力する必要があります。その後、入力する必要があります。その等価ならログインしていますが、ほとんどどのように動作しているのか、ボタンをクリックしたときに機能が動作しないのですが、コンソールにはエラーが表示されません。

window.onload = function(){ 
     document.getElementById("myButton").addEventListener("click", sys.addUser()); 
     var newUser = myUser.value; 
    var newPass = myPassword.value; 
    }; 

    var sys = { 
     users:[ 
      {username: "alexandr", password:"1334"}, 
      {username: "evgeny", password:"1345"}, 
     ], 
     addUser: function(username, password){ 
      var same = false; 
      for(var x = 0; x < sys.users.username && sys.users.password; x++){ 
       if(newUser.length == this.users.username.length[x]){ 
        same = true; 
       if(same == true){ 
        myMessage.innerHTML ="Its a same"; 
       } 
       else if(newPass.length == this.users.password.length[x]){ 
        same = true; 
        myMessage.innerHTML ="Its a same"; 
       }     
       else{ 
        this.users.username.push(newUser); 
        myMessage.innerHTML = "Ok"; 

       } 
       } 
      } 

     } 

    }; 
+4

をプレイするために半作業例を思い付くjsfiddleを使用することをお勧めしているはずです。すべてのパスワードとユーザー名は、サイトを使用しているすべてのユーザーに表示されます。セキュリティは、バックエンドで行われ – baao

+0

申し訳ありませんが、私はあなたのforeachループはそれのようにする必要がありだと思う..私は動作しませんだと思う - のために>(VARのx = 0; X

+0

そのわずかのみトレーニングのために働かないで、私はそれを作る方法を知る必要があります。 –

答えて

0

コードを論理的に見ると、内容をチェックする必要があります。 たとえば、sunilsは異なる場合でもevgenyと一致します。 NEWUSER == users.username [x]の代わりに

+0

あなたはそれをはるかに説明してください。私はそれを試しても、私はクリックしたが、何も動作しません。私はコンソールにエラーが表示されません。 –

+0

また、これら2つの系統 VAR NEWUSER = myUser.valueを移動させます。 var newPass = myPassword.value; addUser()の最初の2行は –

0

あなたは、いくつかのオブジェクトは、あなたの入力値と同じパスワードや入力を持っているかどうかを確認するためにsome()メソッドを使用することができます。

はこれを持っています。

var sys = { 
 
    users: [{ 
 
    username: "alexandr", 
 
    password: "1334" 
 
    }, { 
 
    username: "evgeny", 
 
    password: "1345" 
 
    }], 
 
    addUser: function() { 
 
    var myUser = document.getElementById('myUser').value 
 
    var myPassword = document.getElementById('myPassword').value 
 
    
 
    // This will check if object with same username and password exists in array 
 
    var check = this.users.some(function(e) { 
 
    \t return e.username == myUser && e.password == myPassword 
 
    }) 
 
    
 
    console.log(check ? 'Correct' : 'Wrong username or password.') 
 
    } 
 
}; 
 

 
// You need to use bind here so that context of this in your method is that object and not element on which you are calling event listener 
 
document.getElementById("myButton").addEventListener("click", sys.addUser.bind(sys));
<input type="text" id="myUser"> 
 
<input type="text" id="myPassword"> 
 
<button id="myButton">Check</button>

0

がエラーの多くは、それは私がこれに変えているようにコードでの作業、あります。すべての変更

を参照してくださいコードの差分ツールを使って、あなたが言うように、これは私はあなたのコードを修正すると、あなたにこれを行うには良い方法を示すよりも、あなたに多くの使用であろうことを考え出し学習運動です。

は、将来的には、あなたはよく人々がフロントエンドのログインシステムを実装するあなたの時間を無駄にしないでください

<html> 
<body> 
<button type=button id=myButton>click me</button> 
<input type="text" id='myUser'/> 
<input type="text" id='myPassword'/> 
    <span type="text" id='myMessage'></span> 

<script> 


    var sys = { 
     users: [ 
       { username: "alexandr", password: "1334" }, 
       { username: "evgeny", password: "1345" }, 
     ], 
     addUser: function (username, password) 
     { 
      newUser = document.getElementById("myUser").value; 
      newPass = document.getElementById("myPassword").value 
      myMessage = document.getElementById("myMessage") 

      var same = false; 
      for (var x = 0; x < sys.users.length; x++) 
      { 
       if (newUser.length == sys.users[x].username.length) 
       { 
        same = true; 
        if (same == true) 
        { 
         myMessage.innerHTML = "Its a same"; 
        } 
        else if (newPass.length == sys.users[x].password.length) 
        { 
         same = true; 
         myMessage.innerHTML = "Its a same"; 
        } 
       } 
      } 
      if (!same) 
      { 
       sys.users.push({ username: newUser, password: newPass }); 
       alert(sys.users.length); 
       myMessage.innerHTML = "Ok"; 
      }    
     } 
    }; 



    window.onload = function(){ 

    document.getElementById("myButton").addEventListener("click", sys.addUser); 
    }; 

</script> 
</body> 
</html> 
+0

b.t.wです。 forループ内のロジックを修正しませんでした。あなたは同じ=真を設定し、同じことが真であるかどうかをチェックします:-)しかし、私はsys.addUserなどから()を削除して、少なくともそれをデバッグしようとすることができます。それをデバッグするにはjavascriptデバッガーキーワードを使用してください – tony

+0

ありがとうトニー。 –

+0

ようこそ。私はあなたがここに新しいとあなたの質問のいずれかが受け入れられた答えを持っているのを見て、それはあなたが最も役に立ちました – tony

関連する問題