JavaScript: триггер insertBefore "NotFoundError: узел не найден" - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь вставить новый элемент на мою страницу, используя метод insertBefore , но возникает следующая ошибка: «NotFoundError: Узел не найден».

Я не знаюНе понимаю, почему это не работает.

Вот мой код:

let parent = document.getElementById('parent-id')

let title = notification.getElementsByTagName('h3')[1]
let subtitle = createNodeBefore(parent, title, 'h4', 'Subtitle text')

А вот моя createNodeBefore() функция:

let createNodeBefore = (parent, node, type, text, id = false, className = false, style = false) => {

    let textNode = document.createTextNode(text)
    let element = document.createElement(type)

    element.className = className ? className : ""
    element.id = id ? id : ""
    element.style = style ? style : ""
    element.appendChild(textNode)

    parent.insertBefore(element, node)

    return element
}

Когда я делаю консольвойти прямо перед строкой parent.insertBefore(element, node), я вижу parent, element и node.

Редактировать: Добавить HTML

HTML выглядит так:

<article id="parent-id">
    <div>
       <h3>Some text</h3>
       <i>5th December 2018</i>
       <h3>My title</h3>
       <p>Content ...p>
        ...
    </div>
</article>

1 Ответ

0 голосов
/ 29 декабря 2018

ваш код ожидает, что элемент article будет родительским узлом элемента h3, но это не так - элемент div является его родителем.Это изменение должно исправить проблему:

let parent = document.getElementById('parent-id').getElementsByTagName('div')[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...