【发布时间】:2018-09-07 14:32:06
【问题描述】:
我对编码非常陌生,并且在某些逻辑方面遇到了困难。昨晚我问了另一个问题,社区真的很有帮助(谢谢!),所以我想我会再试一次。 `
我正在尝试制作一个程序来收集用户的电子邮件和名字。我想检查表单上的每个框中是否输入了一些内容,为了确保他们正确输入了他们的电子邮件地址,emailAddress1 与 emailAddress2 相同。
我已经定义了一个 "var errorMessage = "";"如果在任何时候出现错误,它会根据用户在表单上犯的错误重新定义一个新的 errorMessage。
我认为问题在于第二个 if-else 语句。我以为如果“errorMessage =”“;”不过,它会提交表单。但是,无论它执行什么 else 语句,我都会收到一条空错误消息的警报。
为什么,如果 errorMessage = "",它会运行 else 语句并跳过使用 errorMessage = "" 作为条件的 if 语句?
"use strict";
var $ = function(id) {
return document.getElementById(id);
};
var joinList = function() {
var emailAddress1 = $("email_address1").value;
var emailAddress2 = $("email_address2").value;
var firstName = $("first_name").value;
var errorMessage = "";
// validate the entries
if (emailAddress1 == "") {
errorMessage = "First email address entry required";
$("email_address1").focus();
} else if (emailAddress2 == "") {
errorMessage = "Second email address entry required";
$("email_address2").focus();
} else if (emailAddress2 != emailAddress1) {
errorMessage = "Email address entries must match";
$("email_address2").focus();
} else if (firstName == "") {
errorMessage = "First name entry required";
$("first_name").focus();
}
// submit the form if all entries are valid
// otherwise, display an error message
if (errorMessage = "") {
$("email_form").submit();
} else {
alert(errorMessage);
}
};
window.onload = function() {
$("join_list").onclick = joinList;
$("email_address1").focus();
};
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> Join Email List</title>
<link rel="stylesheet" href="email_list.css">
<script src="email_list.js"></script>
</head>
<body>
<main>
<h1>Please join our email list</h1>
<form id="email_form" name="email_form" action="join.html" method="get">
<label for="email_address1">Email Address:</label>
<input type="text" id="email_address1" name="email_address1"><br>
<label for="email_address2">Re-enter Email Address:</label>
<input type="text" id="email_address2" name="email_address2"><br>
<label for="first_name">First Name</label>
<input type="text" id="first_name" name="first_name"><br>
<label> </label>
<input type="button" id="join_list" value="Join our List">
</form>
</main>
</body>
</html>
**
【问题讨论】:
-
你知道=和==和===的区别吗
-
将
if (errorMessage = "")更改为if (errorMessage == "") -
===用于比较,=用于分配。通过使用if (errorMessage = "")而不是if (errorMessage === ""),您正在为errorMessage 分配一个新值,而不是比较errorMessage 的值,这将始终触发else 子句。 -
@shilly 感谢您的回复!我觉得自己很愚蠢!
标签: javascript logic