Как проверить, есть ли у узла childNode перед его удалением? - PullRequest
0 голосов
/ 20 ноября 2018

Я только что получил эту странную ошибку:

enter image description here

И я не знаю, как это произошло.
.contains() должен вернуться true только если placeholder является потомком overParent, но как это может вернуть true и не иметь placeholder в качестве дочернего?

Решения, которые мне нужны:

  1. Почему и как происходит эта ошибка?
  2. Лучшее решение для удаления placheholder только тогда, когда оно является дочерним overParent.

Наблюдения:

IЯ делаю это на реакцию.

1 Ответ

0 голосов
/ 20 ноября 2018

Проблема в том, что, хотя .contains говорит вам, что placeholder является потомком overParent, это может быть внучатый узел.В этом случае вы пытаетесь удалить узел, который находится в другом узле, из overParent.

. В демонстрационных целях проверьте, выглядит ли фактический DOM следующим образом:

- overParent
    - <some node>
       - placeholder

Чтобы избежать подобных ошибок, перейдите к прямому родителю узла, который вы хотите удалить, и вместо этого вызовите removeChild:

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