javascript - 如何为我的基本登录屏幕解决循环中的逻辑问题
问题描述
当有人输入错误的用户名或密码时,我会收到代码告诉我。我可以让它在人们输入第一个用户名和密码时让他们进入
user1
和pass1
但是,如果他们尝试user2
并且pass2
它说这是一个错误的密码。我知道这是我对循环的逻辑错误,但是,我一辈子都想不通!可以的话请帮我理解!
谢谢
<!DOCTYPE html>
<html lang="en">
<head>
<title>Assignment 1</title>
<link rel="stylesheet" type="text/css" href="css/login.css">
</head>
<body>
<script>
document.body.style.backgroundColor = "grey";
var valid = false;
function validate() {
var useArray = ["user1", "user2", "user3"];
var passArray = ["pass1", "pass2", "pass3"];
var x = document.login.userId.value;
var y = document.login.passWord.value;
for(var i = 0; i < useArray.length; i++) {
if (x == useArray[i] && y == passArray[i]) {
document.write("You have successfully logged on to your
class!");
return false;
} else if (i = useArray.length - 1) {
document.write("Error: User Id is not valid, please click the
link below again \n \n");
var l =(" link back");
var back = l.link("practice.html");
document.write(back);
return false;
}
}
}
</script>
<div class="container">
<h1>Logon</h1>
<form name="login">
<label for="useId">Userid: </label>
<input type="text" name="userId" required>
<br><br>
<label for="passWord">Password: </label>
<input type="password" name="passWord" required>
<br><br>
<input type="button" class="submit" value="Log In" name="submit"
onclick="validate(this.form)">
</form>
</div>
<br><br>
</body>
</html>
我也需要它来接受 Array 的其他部分。例如,当有人放入usee2
时pass2
谢谢
解决方案
你在这里遇到的麻烦else if (i = useArray.length - 1)
useArray.length
对于所有循环都是 3 所以userArray.length - 1
总是 eval to 2
,你i = 2
在if
JS 中设置赋值运算符也返回分配的值,所以你基本上在写
else if( 2 )
它总是会计算为true
推荐阅读
- c++ - 在一定长度后从数组打印出时缺少整数
- tensorflow - 如何在 tensorboard 中可视化 K 折交叉验证
- javascript - 在 React 钩子中调用函数是可能的
- javascript - 从 e.target.parentNode 获取特定 div 后,我们如何访问它的某些属性/属性
- .net - 使用 dot Net MS Graph SDK 获取自己的用户信息时出现错误代码 406?
- python - 在 Python 中使用 get 和 requests 时如何防止下载空的 pdf 文件?
- python - 从循环创建数据集
- javascript - 如何在 Python Eel 中访问本地文件?
- java - byte byteVar = 100 有效,但 int intVar = 100L 会导致编译错误。为什么?
- c - 从标准输入读取任意数量的字符,直到在 C 中按 enter