为什么使用 document.getElementByID 获取我的表单会阻止 alert() 触发?

Why does getting my form with document.getElementByID stop alert() from firing?

我正在尝试提醒表单元素的值,但这即使在最简单的情况下也不起作用:获取表单元素然后提醒字符串。

警报在单独时触发,但在我将表单数据放入变量时不会触发。为什么?

我敢肯定这里某处可能有一个非常简单的错误,但我很困惑。

<!DOCTYPE html>
<html>
<head>
<!-- ISTE240 Exercise 5b -->
<meta charset=utf-8 />
<title>Get elements from a form</title>

<script>
function getFormValues() {
// function to send first and last names to an 'alert' message.
   alert("test");
   var form = document.getElementById(“regForm”).elements;
}

</script>
</head>
<body>
<p>JavaScript Exercise 5b </p> 
<form id="regForm" onsubmit="getFormValues()">
First name: <input type="text" name="fname" value="Boo"><br>
Last name: <input type="text" name="lname" value="Radley"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>

默认情况下 form 标签将尝试提交表单值。您必须防止默认行为,下面演示

document.querySelector('#regForm').onsubmit = function(e){
  e.preventDefault();
  alert('a');
  
  var form = document.getElementById("regForm").elements; //<-- wrong syntax, must be "
  console.log(form);
}
<!DOCTYPE html>
<html>

<head>
  <!-- ISTE240 Exercise 5b -->
  <meta charset=utf-8 />
  <title>Get elements from a form</title>
</head>

<body>
  <p>JavaScript Exercise 5b</p>
  <form id="regForm">
    First name:
    <input type="text" name="fname" value="Boo">
    <br>Last name:
    <input type="text" name="lname" value="Radley">
    <br>
    <input type="submit" value="Submit">
  </form>
</body>

</html>