【问题标题】:How to check if an element exists in DOM or not in JavaScript如何检查一个元素是否存在于 DOM 中或 JavaScript 中不存在
【发布时间】:2015-12-20 17:46:18
【问题描述】:

我用这段代码从 DOM 中删除了一个元素:

box1.parentNode.removeChild(box1);

如何检查 box1 是否在 DOM 中。

我想要这个,因为如果我再次尝试从 DOM 中删除它,这将导致错误。

【问题讨论】:

标签: javascript


【解决方案1】:

Node.contains() 方法返回一个布尔值,指示节点是否是给定节点的后代。

您可以使用Contain

if( node.contains( otherNode ) ){
    //Your code here
}

注意:要签入所有 DOM,请使用 document.contains(node)

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    您可以只使用parentNode 属性来查看节点是否已附加。

    var div = document.querySelector('div');
    console.log(div.parentNode !== null); //Attached, true
    div.parentNode.removeChild(div);
    console.log(div.parentNode !== null); //Not attached, false
    <div></div>

    【讨论】:

      【解决方案3】:

      var box1 = document.getElementById("box1") // EXAMPLE to get an element
      
      if (box1.parentNode && box1.parentNode.contains(box1)) {
        box1.parentNode.removeChild(box1);
      }
      
      // Example: won't trigger an error:
      if (box1.parentNode && box1.parentNode.contains(box1)) {
        box1.parentNode.removeChild(box1);
      }
      
      // Example: would trigger an error:
      box1.parentNode.removeChild(box1);
      <div id="box1">a</div>
      <div id="box2">b</div>
      <div id="box3">c</div>

      【讨论】:

      • 如果box1null 会发生什么?
      • 它不能为空,我们设置它来容纳一个元素。但是当它不在 dom 中(不再)时,它可能在 DOM 中没有 parentElement,这就是它检查 parentNode 而不是 box1 本身的原因
      • 我的意思是如果 box1 元素不在 DOM 中,document.getElementById("box1") 不会返回 null 吗?
      • :D 我看到了你的回答,请放心,我没有投反对票。但是document.getElementById("box1") 只是一个例子?获取元素
      • 不用担心。我试图检查你是否应该使用box1 &amp;&amp; box1.parentNode...
      猜你喜欢
      • 2018-08-03
      • 2015-10-02
      • 1970-01-01
      • 1970-01-01
      • 2012-09-28
      • 1970-01-01
      • 1970-01-01
      • 2014-09-30
      • 2015-11-07
      相关资源
      最近更新 更多