0

jsクラスの簡単なログインスクリプトを作成する必要があります。

ループを機能させることができません。情報を入力するたびに、「割り当ての左側が無効です」と表示されます。

ログインボタンがクリックされると、getData関数はボックスの値を取得し、配列をチェックするログオン関数にそれらを渡します。ここでスクリプトが停止します。ifステートメントの=を==に変更すると、配列の最後の有効なログインは受け入れられますが、他のログインは受け入れられません。

私は何が間違っているのですか?

<script type="text/javascript">
var userLogins = [{user:"user1", password:"pass1"},{user:"user2", password:"pass2"},{user:"user3", password:"pass3"}]
var success = null;
function logon(user, pass) {
    userok = false;
    for (i = 0; i < userLogins.length; i++)
    { 
        if(pass = userLogins[i].password && user = userLogins[i].user )
        {
            success = true;
        }
        else
        {
            success = false;
        }
    }
    secret(success);
}

function getData() {
    var user = document.getElementById("userid").value;
    var password = document.getElementById("password").value;
    logon(user, password);
}

function secret(auth){
    if(auth)
    {
        show('success');
        hide('login');
    }
    else
    {
        show('error');
        hide('login');
    }
}

function show(show) {
    document.getElementById(show).className = "show";
}
function hide(hide) {
    document.getElementById(hide).className = "hide";
}
4

1 に答える 1

4

ifステートメントの=を==に変更すると、配列の最後の有効なログインは受け入れられますが、他のログインは受け入れられません。

=代入演算子です

==等式演算子です

あなたは2つを混同しています。後者が必要です。それ以外の場合、結果の値を割り当てると、値自体(多くの場合、真の値)が返されます。

コメントによると、厳密な等式演算子もあります。===== この答えの違いはあなたの心を吹き飛ばします。

于 2013-01-30T01:11:59.453 に答える