JavaScript:insertBefore触发器“ NotFoundError:未找到节点”

时间:2018-12-29 02:38:05

标签: javascript dom

我正在尝试使用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)行之前进行控制台日志时,可以看到parentelementnode

编辑:添加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 :(得分:0)

您的代码期望article元素是h3元素的父节点,但不是-div元素是其父元素。此更改应解决此问题:

let parent = document.getElementById('parent-id').getElementsByTagName('div')[0]