【发布时间】:2020-11-15 23:00:11
【问题描述】:
我正在尝试使用文本框和按钮进行 3 次尝试来制作基本的密码检查器。所以在 HTML 中,我有这两个元素和一个段落,我想在其中发布答案(正确、错误、条目不足)。
这是 HTML 代码:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="description" content="Test page for Java.">
<link rel="stylesheet" href="style.css">
<title>Java Tester</title>
</head>
<body>
<input id="textbox" type="text">
<button id="button">Enter</button>
<p id="answer"></p>
<script src="script.js"></script>
</body>
</html>
我在 JavaScript 中尝试使用 while 循环。我知道以下代码不起作用,因为第一次输入错误的答案会循环三次并直接进入“条目不足”。我正在想办法写这个,所以我尝试了三遍。
JavaScript 代码:
var answer = document.getElementById("answer");
var textbox = document.getElementById("textbox");
var button = document.getElementById("button");
var password = "wordpass";
var response;
var entryCount = 0;
var entryLimit = 3;
var error = false;
button.addEventListener("click", function(){
while(textbox.value != password && !error){
if(entryCount < entryLimit){
answer.innerHTML = "Wrong Password";
entryCount++;
textbox.value = "";
} else{
error = true;
}
}
if(error){
answer.innerHTML = "Out of entries";
} else{
answer.innerHTML = "Correct Password";
}
然而,我想如果我只是在 textbox.value=""; 下方的 while 循环中写一些随机文本,它就会开始按我想要的方式工作 - 我可以输入 3 次通行证。为什么是这样?只是为了澄清这里是有效的 JS 代码。
工作 JS 代码:
var answer = document.getElementById("answer");
var textbox = document.getElementById("textbox");
var button = document.getElementById("button");
var password = "wordpass";
var response;
var entryCount = 0;
var entryLimit = 3;
var error = false;
button.addEventListener("click", function(){
while(textbox.value != password && !error){
if(entryCount < entryLimit){
answer.innerHTML = "Wrong Password";
entryCount++;
textbox.value = "";
ousdgohjrandomfoihsodfhsdfhsdofihoihsoidhsdoufhouhsdfrduiiugsdf
} else{
error = true;
}
}
if(error){
answer.innerHTML = "Out of entries";
} else{
answer.innerHTML = "Correct Password";
}
});
【问题讨论】:
-
它可以在没有随机文本的情况下工作。为什么你需要一个while循环你能解释一下吗?jsfiddle.net/asutosh/wra9t30L/2
-
第二个代码起作用的原因是它强制发生错误,从而阻止 while 循环多次运行。如答案中所述,您不需要为此使用while循环。
标签: javascript html while-loop