【问题标题】:Why is this IF condition true? Shouldn't the condition evaluate to false? [duplicate]为什么这个 IF 条件为真?条件不应该评估为假吗? [复制]
【发布时间】:2019-10-17 07:49:58
【问题描述】:

我想我在这里缺少一些基本的东西。为什么 IF 条件不成立?条件不应该评估为假吗?

所有条件如何变为真。

function subdetails(){
    var name = $("#name").val();
    var email = $("#emailid").val();
    var state = $("#state").val();
    var city = $("#city").val();
    var titile = $("#ctitle").val();
    var cname = $("#cname").val();
    var cdesc = $("#cdesc").val();
    var disamt = $("#disamt").val();

    if(name && email && state && city && title && cname && cdesc && disamt !== '') {
      alert();
    }

HTML:

<button type="button" onclick="return subdetails();" data-toggle="modal" data-target="#myModal" id="step3top" class="btn btn-submit">Next</button></div>  

【问题讨论】:

  • 那么,所有这些变量的值是多少?他们都是“真实的”和disamt !== ''吗?
  • 请访问help center,使用tour查看内容和How to Ask。做一些研究,搜索关于 SO 的相关主题;如果您遇到困难,请发布您的尝试minimal reproducible example,并注明输入和预期输出。
  • 请提供一个更好的解释和所有使用的变量的上下文。
  • 我认为这并不完全符合您的想法 - 它正在转换为 if ( (name is truthy - i.e. name !="" &amp;&amp; name !== null &amp;&amp; name != undefined &amp;&amp; name !=0) &amp;&amp; same for the others &amp;&amp; disamt !== '')
  • 定义的变量被命名为titile,而函数正在与title进行比较,在这种情况下不能定义。这是错误还是只是代码中的错字?

标签: javascript


【解决方案1】:

我猜你是这么认为的

if(name && disamt !== '')

等于

if(name !== '' && disamt !== '')

然而,这不是真的,你不能这样缩短它。您需要为每个变量编写条件。 您给定的代码

if(name && email && state && city && title && cname && cdesc && disamt !== '') {
  alert();
}

写出来时等于这个:

if(name == true && email == true && state == true && city == true && title == true && cname == true && cdesc == true && disamt !== '') {
  alert();
}

你需要写的是这样的:

if(name !== '' && email !== '' && state !== '' && city !== '' && title !== '' && cname !== '' && cdesc !== '' && disamt !== '') {
  alert();
}

【讨论】:

  • if(name ...) 写出时不等于if(name === true ...),考虑name="abc",只有第一个if 会触发,因为名字是真实的,不等于true
  • 更正为 ==
  • 那仍然不等于if(name ...):jsfiddle.net/ztfqey54 我认为它更像if(Boolean(name) === true ...),或者只是if(Boolean(name) ...)
  • equals to this when written out: 不,if (name) 不会转换为 if (name === true) 甚至不会转换为 if (name == true) - 它是 if (name !== false &amp;&amp; name !== undefined &amp;&amp; name !== 0 &amp;&amp; name !== "" &amp;&amp; name !== NaN)
  • 我已经用过这些代码了。但现在解决了这个问题。这是拼写错误。标题=>标题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-11
  • 2023-04-05
  • 2017-12-18
  • 2018-07-01
  • 2012-12-06
相关资源
最近更新 更多