首页 > 解决方案 > 如何在删除节点之前检查节点是否有 childNode?

问题描述

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

在此处输入图像描述

我不知道那是怎么发生的。仅当是 的孩子时才
.contains()应返回,但是如何返回 true 并且没有孩子?trueplaceholderoverParentplaceholder

我需要的解决方案:

  1. 为什么以及如何发生此错误?
  2. 只有placheholder当它是overParent.

观察:

我正在做这个反应。

标签: javascriptnodesremovechild

解决方案


问题是,虽然.contains告诉你那placeholder是 的后代overParent,但它可以是节点。如果是这种情况,您正试图从overParent.

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

- overParent
    - <some node>
       - placeholder

为避免此类错误,请转到要删除的节点的直接父节点并调用removeChild它:

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

推荐阅读