0

因此,这是为了进行安全登录。我通过 chrome 的 javascript 控制台运行它,我得到'未捕获的 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' 也可能返回 undefined,因为在错误的范围内。var ret = 0 仅适用于“for”范围

于 2013-04-17T23:45:22.467 回答
0

是的,pass.hashCode() = -976887139是一个任务。而且由于函数调用不返回引用,因此分配给它是无效的。你可能想要比较

pass.hashCode() == -976887139

此外,您将想要获取这些 DOM 元素的values(我简直不敢相信密码输入一个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 回答