替换 Child 给出错误(无法在节点上执行 "replacechild")?
Replace Child giving error (failed to execute "replacechild" on node)?
希望大家一切顺利
当我遇到这个错误时我正在使用 replacechild:
未捕获的 DOMException:无法在 'Node' 上执行 'replaceChild':要替换的节点不是该节点的子节点。
但我看到代码没问题,我找不到任何问题
代码如下:
Javascript代码:
let list = document.getElementById("List");
list.replaceChild(text2, document.getElementById("last"));
HTML代码:
<ol id="List">
<li><div class="child" id="first">Child 1</div></li>
<li><div class="child" id="Second">Child 2</div></li>
<li><div class="child">Child 3</div></li>
<li><div class="child" id="last">Child 4</div></li>
</ol>
我用来替换 child 的文字:
let text2 = document.createTextNode("This is a heading");
谢谢
带有 id = "last"
的元素不是带有 id = "List"
的元素的子元素。请注意,它们之间有一个 li
元素。
根据documentation,被替换的元素必须是直接子元素。
示例如下:
const text = document.createTextNode("This is a heading");
const list = document.getElementById("list");
const selectedNode = document.getElementById("last");
selectedNode.parentElement.replaceChild(text, selectedNode);
<ol id="list">
<li><div class="child" id="first">Child 1</div></li>
<li><div class="child" id="Second">Child 2</div></li>
<li><div class="child">Child 3</div></li>
<li><div class="child" id="last">Child 4</div></li>
</ol>
id="last" 的
元素不是 ID 为 "list" 的 child 元素。它是最后一个 元素的 child。
第二个问题是
允许的children只有- 。
您不能将其替换为文本节点。
如果你想简单地改变最后一里的文字,你应该使用类似的东西。
document.getElementById("last").innerHTML = "This is a heading";
但这不会使其成为标题,只是更改文本。
在我看来,您应该更多地研究 html 和 DOM 以理解这些概念。
希望大家一切顺利
当我遇到这个错误时我正在使用 replacechild:
未捕获的 DOMException:无法在 'Node' 上执行 'replaceChild':要替换的节点不是该节点的子节点。
但我看到代码没问题,我找不到任何问题
代码如下:
Javascript代码:
let list = document.getElementById("List");
list.replaceChild(text2, document.getElementById("last"));
HTML代码:
<ol id="List">
<li><div class="child" id="first">Child 1</div></li>
<li><div class="child" id="Second">Child 2</div></li>
<li><div class="child">Child 3</div></li>
<li><div class="child" id="last">Child 4</div></li>
</ol>
我用来替换 child 的文字:
let text2 = document.createTextNode("This is a heading");
谢谢
带有 id = "last"
的元素不是带有 id = "List"
的元素的子元素。请注意,它们之间有一个 li
元素。
根据documentation,被替换的元素必须是直接子元素。
示例如下:
const text = document.createTextNode("This is a heading");
const list = document.getElementById("list");
const selectedNode = document.getElementById("last");
selectedNode.parentElement.replaceChild(text, selectedNode);
<ol id="list">
<li><div class="child" id="first">Child 1</div></li>
<li><div class="child" id="Second">Child 2</div></li>
<li><div class="child">Child 3</div></li>
<li><div class="child" id="last">Child 4</div></li>
</ol>
id="last" 的
元素不是 ID 为 "list" 的 child 元素。它是最后一个 元素的 child。
第二个问题是
- 允许的children只有
- 。
您不能将其替换为文本节点。
如果你想简单地改变最后一里的文字,你应该使用类似的东西。
document.getElementById("last").innerHTML = "This is a heading";
但这不会使其成为标题,只是更改文本。 在我看来,您应该更多地研究 html 和 DOM 以理解这些概念。