首页 > 解决方案 > 在 JavaScript 中,当我使用带提示的 while 语句时,当用户单击“取消”时,结果出乎意料

问题描述

我有这段代码:

function checkGrade(form) {
  var myGrade = parseFloat(form.myText.value);

  while (isNaN(myGrade)) {
    myGrade = prompt("Enter a numerical grade value:", "")
  }

  if (myGrade >= 91) {
    alert("Your grade is an A.");
  } else if (myGrade >= 81 && myGrade <= 90) {
    alert("Your grade is a B.");
  } else {
    alert("Your grade is a C or lower.");
  }
}
<h3>CIW JavaScript Specialist</h3>
<hr />
<form name="myForm">
  Enter numerical grade value:
  <input type="text" name="myText" size="10" />
  <p>
    <input type="button" value="Check Grade" onclick="checkGrade(this.form);" />
  </p>
</form>

预期的结果是,当用户输入字母而不是数字时,提示会反复要求用户输入数字。当我在提示框中输入一个字母并单击“确定”时,此方法有效,再次出现相同的提示。但是,当我在提示符上放置“取消”时,会出现“您的成绩为 C 或更低”的警告。

我怎样才能解决这个问题?我是否打算将 parseInt() 放在某个地方?

Pd:我知道我正在尝试做的不是好的做法,但我这样做是为了更好地了解 JavaScript 的工作原理。

标签: javascriptwhile-loopprompt

解决方案


您没有考虑“取消”

取消时,变量变为空。所以使用这个:

如果(我的等级 === 空)

检查用户是否点击取消。

基本上:

    if (myGrade !== null)
{
   if(myGrade >= 91) {
alert("Your grade is an A.");
 }
  else if(myGrade >= 81 && myGrade <= 90) { 
alert("Your grade is a B.");
 }
       else {
      alert("Your grade is a C or lower.");
 }
}

推荐阅读