0

したがって、これは安全なログインを行うためです。これを chrome の JavaScript コンソールから実行すると、「Uncaught ReferenceError: Invalid left-hand side in assignment ?!」が表示されます。助けてください!

function logIn() {
String.prototype.hashCode = function() {
        for(var ret = 0, i = 0, len = this.length; i < len; i++) {
        ret = (31 * ret + this.charCodeAt(i)) << 0;
    }
        return ret;
    };

var user = document.getElementById("username"),
    pass = document.getElementById("password");
if ((user = "Fedora") && (pass.hashCode() = -976887139)) {
    window.alert("Captain Fedora: SuperUser");

}
}   
4

3 に答える 3

3
if ((user = "Fedora") && (pass.hashCode() = -976887139))

する必要があります

if ((user == "Fedora") && (pass.hashCode() == -976887139))

したがって、割り当てではなく比較を行います

于 2013-04-17T23:39:14.667 に答える
0
if ((user = "Fedora") && (pass.hashCode() = -976887139))

への変更

if ((user == "Fedora") && (pass.hashCode() == -976887139))

また、スコープが間違っているため、「reuturn ret」は未定義を返す場合があります。var ret = 0 は「for」スコープでのみ機能します

于 2013-04-17T23:45:22.467 に答える
0

はい、pass.hashCode() = -976887139課題です。また、関数呼び出しは参照を返さないため、割り当ては無効です。あなたはおそらく比較したかった

pass.hashCode() == -976887139

valueまた、これらの DOM 要素の sを取得したいと思うでしょう(パスワード入力メソッドがあるとはまったく信じられません)。また、変数を代入する代わりにhashCode、変数の内容をその文字列と比較したいと思うでしょう。user

var user = document.getElementById("username").value,
    pass = document.getElementById("password").value;
if (user == "Fedora" && pass.hashCode() == -976887139) {
    window.alert("Captain Fedora: SuperUser");
}
于 2013-04-17T23:39:17.133 に答える