我正在尝试使用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>
答案 0 :(得分:0)
您的代码期望article
元素是h3
元素的父节点,但不是-div
元素是其父元素。此更改应解决此问题:
let parent = document.getElementById('parent-id').getElementsByTagName('div')[0]