Javascript 警报在意外时出现

标签 javascript

我试图确保表单的所有字段都不为空。当有空字段时,此警报会按预期出现,但是当所有字段都已满时,警报仍然会出现。我错过了什么吗?

var sn = document.myForm.address.length;
var sna = document.myForm.street.length;
var su = document.myForm.city.length;
var st = document.myForm.state.length;
var usn = document.myForm.username.length;

if (sn || sna || su || st || usn == null) {
    alert("All fields are required. Please ensure you leave no fields blank."); 
    return false;   
} else {

}

最佳答案

由于您初始化了所有变量,您的 if 语句的计算结果为 true,如下所示:

if (true || true || true || true || true || false)

只有一个 true 才能使上面的整个 if 条件计算为 true,因为所有 || 运算符都是OR 运算符。

进一步考虑,如果您只是声明但不初始化变量,例如 var sn;//声明而不是var sn = document.myForm.address.length;//initialized 则其条件计算结果为 false,因为声明了 if(sn) 但未初始化 = false`。

此外,要检查每个变量内部的值而不是它们是否已初始化,您必须执行以下操作:

if (sn == null || sna == null || su == null || st == null || usn == null)

或者可能因为你被分配了一个你想要的长度

if (sn > 0 || sna > 0 || su > 0 等等...

关于Javascript 警报在意外时出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32534400/

相关文章:

javascript - jQuery 中的 Yahoo New Weather API oAuth 调用

javascript - 基于类元素取其他元素中某个元素的内容

javascript - Vuejs2设置超时在设置的秒数后未能执行该函数

JavaScript:将主 div 标签高度设置为零,这使得所有子 div 的高度都为零

javascript - 如何在react-navigation中向stackNavigator中的所有屏幕添加通用背景图像?

javascript - jQuery Ajax JSON 不返回任何响应

javascript - 检查用户是否在线使用 Firebase 制作的聊天应用程序

javascript - 可以为邮件添加刚刚克隆的输入字段(最后一个)

javascript - 将月数添加到文本字段中的日期

javascript - react : Let child class assign state?