【问题标题】:How to find if element with specific id exists or not如何查找具有特定id的元素是否存在
【发布时间】:2017-07-20 10:39:31
【问题描述】:

在我的 JavaScript 中,我想检查具有特定 id 的元素是否存在,我尝试了 2 种方法

1)。

var myEle = document.getElementById("myElement");
if(myEle  == null){
   var myEleValue= document.getElementById("myElement").value;
}

2).

if(getElementById("myElement")){
    var myEleValue= document.getElementById("myElement").value;
}

但它给出了与下面相同的错误 -

预期对象

【问题讨论】:

  • 我是document.getElementById()
  • 在你的第一种情况下,你说如果元素为空然后获取它的值,你应该检查它是否不为空(或者更确切地说,如果它是真实的,就像你在案例 2 中所做的那样) .另一件事是您需要使用document.getElementById()
  • 是的,我在我的代码中做了同样的事情,这里是错误的
  • 只需更改为myEle != null,如果找不到具有所需id的元素,document.getElementById()返回null(请参阅developer.mozilla.org/en-US/docs/Web/API/Document/…
  • @AmitaPatil 您不得将问题编辑为答案!您必须保留导致问题的代码!

标签: javascript dom


【解决方案1】:
 var myEle = document.getElementById("myElement");
    if(myEle){
        var myEleValue= myEle.value;
    }

如果元素实际上不存在于 dom 中,则 getElementById 的返回值为 null,因此您的 if 语句将失败,因为 null 被认为是错误值

【讨论】:

  • 你的意思是 document.getElementById("myElement") 这返回布尔值?
  • 使用if(myEle!=null){}
  • @AmitaPatil 不,它没有,但是您可以检查是否定义了变量,仅在 if 中检查它,如果未定义变量 myEle,则 if 将选择 else 代码块
  • 您还应该考虑将其包装在 load 事件回调中,就好像 DOM 未加载一样,即使元素存在,if 也永远不会执行!
  • @ibrahimmahrir 我刚刚修改了他的一段代码,如果问题在加载,请用其他代码编辑问题,向我们展示你的问题是什么
【解决方案2】:

您可以简单地使用if(yourElement)

var a = document.getElementById("elemA");
var b = document.getElementById("elemB");

if(a)
  console.log("elemA exists");
else
  console.log("elemA does not exist");
  
if(b)
  console.log("elemB exists");
else
  console.log("elemB does not exist");
<div id="elemA"></div>

【讨论】:

    【解决方案3】:

    getElementById

    返回值:一个元素对象,代表一个具有指定ID的元素。如果不存在具有指定 ID 的元素,则返回 null 见:https://www.w3schools.com/jsref/met_document_getelementbyid.asp

    真与假

    在 JavaScript 中,真值是在布尔上下文中计算时被认为是真的值。所有值都是真实的,除非它们被定义为虚假(即,除了 false、0、""、null、undefined 和 NaN)。见:https://developer.mozilla.org/en-US/docs/Glossary/Truthy

    当在document 中找不到dom 元素时,它将返回null。 null 是一个 Falsy,可以在 if 语句中用作boolean expression

    var myElement = document.getElementById("myElement");
    if(myElement){
      // Element exists
    }
    

    【讨论】:

    • 感谢您的明确解释。以前从来没有真正理解过 Falsy!
    【解决方案4】:

    您需要指定从哪个对象调用 getElementById。在这种情况下,您可以使用文档。您也不能直接在任何元素上调用 .value 。例如,如果元素是文本框 .value 将返回值,但如果它是一个 div 它将没有值。

    你也有错误的条件,你正在检查

    如果(myEle == null)

    你应该改为

    如果 (myEle != null)

    var myEle = document.getElementById("myElement");
    if(myEle != null) { 
        var myEleValue= myEle.value; 
    }
    

    【讨论】:

    • 最好在 if 块中使用myEle.value
    【解决方案5】:
    document.getElementById('yourId')
    

    是正确的方法。

    文档是指加载到 DOM 中的 HTML 文档。

    它使用函数 getElementById() 搜索 id 它接受元素 id 的参数

    解决办法是:

    var elem = (document.getElementById('myElement'))? document.getElementById('myElement').value : '';
    
    /* this will assign a value or give you and empty string */
    

    【讨论】:

      【解决方案6】:

      使用 typeof 进行元素检查。

      if(typeof(element) === 'undefined')
      {
      // then field does not exist
      }
      

      【讨论】:

        【解决方案7】:

        这对我来说可以检查元素是否退出

        let element = document.getElementById("element_id");
        if (typeof(element) !== 'undefined' && element!== null)
        {
            //content
        }
        

        【讨论】:

          猜你喜欢
          • 2011-03-23
          • 2016-05-27
          • 1970-01-01
          • 2012-03-13
          • 2011-08-09
          • 1970-01-01
          • 2010-12-02
          • 2023-01-14
          • 2015-03-14
          相关资源
          最近更新 更多