如何在删除节点之前检查节点是否具有childNode?

时间:2018-11-20 13:35:21

标签: javascript nodes removechild

我刚得到这个奇怪的错误:

enter image description here

我不知道怎么回事。
.contains()仅在trueplaceholder的子代时才返回overParent,但是如何返回true而不将placeholder作为子代呢?

我需要的解决方案:

  1. 为什么以及如何发生此错误?
  2. 一种更好的解决方案,仅在placheholder的子级时才删除overParent

观察:

我正在做此事。

1 个答案:

答案 0 :(得分:2)

问题是,尽管.contains告诉您placeholderoverParent的后代,但它可以是孙子节点。如果是这种情况,则您尝试从overParent中删除另一个节点中的一个节点。

出于演示目的,请检查实际DOM是否如下所示:

- overParent
    - <some node>
       - placeholder

为避免此类错误,请转到您要删除的节点的直接父节点,然后在其上调用removeChild

if (overParent.contains(placeholder)) {
    placeholder.parentNode.removeChild(placeholder);
    // rest of your code
}