for循环不起作用 - JavaScript

时间:2018-03-09 17:12:34

标签: javascript html

此代码无效:帮助!它只显示为“没有留下任何答案”,而不显示任何其他内容,并显示我只剩下0次尝试。我是Javascript的新手,需要一些支持,我认为“for”循环不起作用。我只能尝试一次这个代码,然后页面崩溃。

@Around

2 个答案:

答案 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 ..