【问题标题】:Check if document.GetElementById("").value does not contain null检查 document.GetElementById("").value 是否不包含 null
【发布时间】:2020-05-25 18:14:18
【问题描述】:

我正在尝试检查以下情况,

var param= document.getElementById("txtbox").value;
if(param!== null  || param.length!==0 || param !=="" || param!==undefined)
{//do something}

但即使 param 为 null,它也会进入 if 块。有人对此有任何想法吗?

【问题讨论】:

  • 只检查param !== '',其他检查无意义。
  • 即使检查..它仍然进入 if block.. 但它不应该
  • #txtbox是什么元素?
  • document.getElementById("txtbox").value 不可能是null。我想不出任何不是undefined(因为该元素根本没有value 属性)或字符串的情况。您需要提供minimal reproducible example
  • @Teemu — 自定义属性可能,但不是自定义属性(这将是无效的 HTML 并生成字符串)。不过minimal reproducible example 会回答这个问题。

标签: javascript getelementbyid null-check


【解决方案1】:

这个呢:

var param= document.getElementById("txtbox");
if(!param && !param.value)
{
    //do something
}

【讨论】:

  • 不想要相反的 if (!!param && !!param.value)
  • !param 如果元素不存在则通过。然后它会尝试检查 som falsy value 的值,这将触发错误。
  • @faransaleem : 同意 salahakbari,你的测试顺序真的很奇怪,你不能先测试 param.length!==0 和 THEN param !==""。先检查param是否存在,然后检查它的length属性(这里是逻辑)
【解决方案2】:

你可以null检查元素喜欢,

function checkNull() {
    var param= document.getElementById("txtbox").value;
    if(!param)
      console.log("Null check passed")    
    else
      console.log(param+" Entered by user")
  }
<input type="text" id="txtbox" name="txtbox">
<button onclick="checkNull()">Null checker</button>

【讨论】:

    【解决方案3】:

    很遗憾,您的代码逻辑不正确。

    例如,如果 param 为 null,则 param!=="" 为 true。因为null是不同的“”(空字符串)等等。

    您只能检查参数变量。

    例如:

    var param= document.getElementById("txtbox").value;
    if(param)
    {//do something}
    

    但 document.getElementById("txtbox") 也可能为 null 或未定义,因此您必须检查它。

    例如:

    var txtBox= document.getElementById("txtbox");
        if(txtBox&&txtBox.value)
        {//do something}
    

    【讨论】:

    • 如果dcument.getElementById("txtbox") 为null,你会得到一个错误null.value....
    • @EugenSunic 我的答案是针对有问题的代码,它没有检查 DOM 元素
    【解决方案4】:

    document.getElementById 将返回单个对象,该对象表示具有所需 ID 的第一个元素,如果没有创建元素,它将返回 null:

    if(!param) {}

    应该够了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-05
      • 1970-01-01
      • 2021-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多