所以,这是为了进行安全登录。我通过chrome的javascript控制台运行这个,我得到'Uncaught ReferenceError:赋值中的左侧无效'?请帮忙!
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");
}
}
答案 0 :(得分:3)
if ((user = "Fedora") && (pass.hashCode() = -976887139))
应该是
if ((user == "Fedora") && (pass.hashCode() == -976887139))
所以你做比较,而不是分配
答案 1 :(得分:0)
是的,pass.hashCode() = -976887139
是assignment。由于函数调用不是return a reference,因此分配给它是无效的。你可能想要comparison
pass.hashCode() == -976887139
另外,您需要获取这些DOM元素的value
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");
}
答案 2 :(得分:0)
if ((user = "Fedora") && (pass.hashCode() = -976887139))
更改为
if ((user == "Fedora") && (pass.hashCode() == -976887139))
同样'reuturn ret'可能会返回undefined,因为在错误的范围内。 var ret = 0仅适用于'for'范围