警报框在javascript上多次显示

时间:2012-09-09 21:10:54

标签: javascript

这是非常简单的代码,与我的其他问题类似。 当我单击“提交”时,警报框会显示三次选项一次,两次显示两次,一次显示三次。

以下是问题最有可能位于的代码部分:

var chosen = ""
var len = document.ExamEntry.r1.length

for (var i = 0; i < len; i++) {
  if (document.ExamEntry.r1[i].checked) {
    chosen = document.ExamEntry.r1[i].value
  }
  if (chosen != "") {
    confirm(chosen)
  }
}

这是我的全部代码。除此之外一切正常。

<!-- saved from url=(0055)file:///C:/Users/Bartek/Downloads/Exam%20entry4.1.2.htm -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></head><body><h1>Exam Entry Form</h1>
    <form name="ExamEntry" method="post" action="file:///C:/Users/Bartek/Downloads/success.html">
        <input type="radio" name="r1" value="GCSE">GCSE
<input type="radio" name="r1" value="AS">AS
<input type="radio" name="r1" value="A2">A2
<table width="50%" border="0">
            <tbody>
<tr>
                <td id="name" style="color: black; ">Name</td>
                <td>
                    <input type="text" name="name">
                </td>
            </tr>
            <tr>
                <td id="subject" style="color: black; ">Subject</td>
                <td>
                    <input type="text" name="subject">
                </td>
            </tr>
<tr>
                <td id="enumber" style="color: black; ">Examination Number</td>
                <td>
                    <input type="text" name="enumber">
                </td>
            </tr>
            <tr>
                <td>
                    <input type="submit" name="Submit" value="Submit" onclick=" return validateForm();">
                </td>
                <td>
                    <input type="reset" name="Reset" value="Reset">
                </td>
            </tr>
        </tbody></table>
    </form>

<script>
function validateForm() {
  var result = true;
  var msg = "";
  if (document.ExamEntry.name.value == "") {
    msg += "You must enter your name \n";
    document.ExamEntry.name.focus();
    document.getElementById('name').style.color = "red";
    result = false;
  }
  if (document.ExamEntry.subject.value == "") {
    msg += "You must enter the subject \n";
    document.ExamEntry.subject.focus();
    document.getElementById('subject').style.color = "red";
    result = false;
  }
  if (document.ExamEntry.enumber.value.length != 4) {
    msg += "The examination number must be exactly four characters long \n";
    document.ExamEntry.enumber.focus();
    document.getElementById('enumber').style.color = "red";
    result = false;
  }
  var chosen = ""
  var len = document.ExamEntry.r1.length

  for (var i = 0; i < len; i++) {
    if (document.ExamEntry.r1[i].checked) {
      chosen = document.ExamEntry.r1[i].value
    }
    if (chosen != "") {
      confirm(chosen)
    }
  }
  if (msg == "") {
    return result;
  } {
    alert(msg);
    return result;
  }
} 
</script>
</body>
</html>  

这是GCSE计算课程。

2 个答案:

答案 0 :(得分:1)

for (var i = 0; i <len; i++) {
if (document. ExamEntry.r1[i].checked) {
chosen = document. ExamEntry.r1[i].value
}
if (chosen != "") {
confirm(chosen)
}
}
如果之前设置的话,

chosen将不会是"";如果未检查该项目,则不会将其设置回"",因此它将是confirm最后一个项目。只需合并它们。

for(var i = 0; i < document.ExamEntry.r1.length; i++) {
    if(document.ExamEntry.r1[i].checked) {
        confirm(document.ExamEntry.r1[i].value);
    }
}

答案 1 :(得分:0)

您错过了else

if (!msg) {
    return result;
} else {
    alert(msg);
    return result;
}