此代码无效:帮助!它只显示为“没有留下任何答案”,而不显示任何其他内容,并显示我只剩下0次尝试。我是Javascript的新手,需要一些支持,我认为“for”循环不起作用。我只能尝试一次这个代码,然后页面崩溃。
@Around
答案 0 :(得分:2)
通常,您提出的算法正在起作用,例如:
for (attempts = 3; attempts >= 0; ) {
const answer = prompt("Answer to live?");
if(answer === "42"){
alert("correct!");
} else {
attempts--;
alert(attempts + " attempts left");
}
}
alert("you lost :(");
但是这种情况确实有效,因为我们有同步代码。等待用户输入正确的答案不是同步的,而是异步的。因此,在您的情况下,它将在用户甚至能够输入正确答案之前检查答案三次,如果输入了正确答案,则循环将永远运行得如此之快,以至于它冻结了浏览器。要解决这个问题,您需要一个状态(剩余)并在每次点击时处理不同的情况:
var attenpts = 3;
function mathCheck() {
if(attempts <= 0)
return answer("Your tries are up!", "red");
var inputValues1 = document.mathGuesser.mGuesser.value;
if (inputValues1 === 'y = 2x - 3' || inputValues1 === 'y=2x-3') {
answer("Correct", "green");
} else if (inputValues1 === ' ' || inputValues1 === '') {
answer("Please enter your answer!", "black");
} else {
answer("Incorrect!", "red");
document.getElementById("attempts").innerHTML = attempts;
attempts--;
}
}
function answer(text, color){
const el = document.getElementById("answer");
el.innerHTML = "<span>" + text + "</span>";
el.style.color = color;
}
答案 1 :(得分:-1)
我不知道你要做什么,你应该在你的问题中指定函数的目的,并提供问题的详细信息,但这是For循环的格式:
ls $(npm root -g)
所以你的for循环应该是这样的:
for(var foo = 0; foo < 10; foo++)
这使得“尝试”在循环的每次迭代中仅增加一次。 请注意,最后一部分取决于您,因为您的变量从3开始,并且在大于或等于0时循环,我将假设您要减少,因此您可以使用:尝试 - ,attempts- = 1 ..