Javascript 这个if/else语句的正确格式是什么?

Javascript 这个if/else语句的正确格式是什么?,javascript,if-statement,Javascript,If Statement,HTML: function checkforinput() { var valid = true; var date = document.getElementById('date'); var time = document.getElementById('time'); var checkbox = document.getElementById('checkbox-1-1'); if (date.value == "" && ti

HTML:

function checkforinput() {

    var valid = true;
    var date = document.getElementById('date');
    var time = document.getElementById('time');
    var checkbox = document.getElementById('checkbox-1-1');
    if (date.value == "" && time.value == "" && checkbox.checked == false || date.value !== "undefined" && time.value !== "undefined" && checkbox.checked) {
        document.getElementById('errMsg10').innerHTML = "*Please Schedule in Advance or Select Now";
        valid = false;
    } else {
        document.getElementById('errMsg10').innerHTML = "";
    }

    return valid;
}


或 现在
*我们将尽快发送帮助。
在上面的代码中,我试图做的是要求输入日期、时间和复选框不能为空,但也不能全部选中。用户可以选中复选框,也可以选择日期和时间

if/else语句的第一部分似乎工作正常,但条件中
|
后面的代码似乎是错误的。如果选择了日期和时间,但未选中复选框,则代码有效。如果选中复选框,但未选择日期和时间,则代码不起作用。它仍然显示
errMsg10

<input id="date" class="datentime" type="date" name="date" min="2015-07-18" max="2015-12-31" value="1"/>
<input id="time" class="datentime" type="time" name="time" value="1"/><br>
<h2 class="bottomOpt">OR</h2><span id="errMsg10"></span>
<h1 class="bottomOpt"><span class="adnow">Now</span><br><span id="asap">*We'll send help ASAP.</span></h1>
<input type="hidden" name="now" value="0"/>
<input type="checkbox" id="checkbox-1-1" class="regular-checkbox" name="now" value="1" /><label for="checkbox-1-1"></label>
<input type="hidden" name="status" value="3"/>
因为您的条件是
条件,所以将这两条语句分组到显式块中,以便计算正确的值

此外,只需检查
即可!time.value
而不是显式检查未定义的。它将仔细检查未定义、null或0


还请注意,使用
==
比使用
=

放入另一组括号以正确分组布尔逻辑更快

if ( (!date.value && !time.value && !checkbox.checked) 
  || (date.value  && time.value && checkbox.checked)) {

顺便说一句,您确定要在“undefined”周围加引号,以便与该字符串进行比较,还是说JavaScript常量?

这是一个条件语句:p

在| |运算符之后,有两个等号!操作人员尝试将其替换为:

if ( (date.value == "" && time.value == "" && checkbox.checked == false) || 
     (date.value !== "undefined" && time.value !== "undefined" && checkbox.checked) ) { 
       // bad input...
    }
else {
   // good input...
}

你需要用括号…把需要一起检查的部分围起来。我现在才意识到,如果选择了时间或日期,并且选中了复选框,那么表单就会通过。无论如何我都可以告诉JS如果!date.value和/或!时间。价值,不要让表格通过?我刚试过,但没用。我猜那是无效的代码。你不能使用
&&&&&&&&&
,因为它是无效的,
&&&
|
是二进制运算符,每个运算符必须由2个
操作数隔开。
date.value != "undefined" && time.value != "undefined"