javascript - 如何删除已被outerHTML修改的元素

标签 javascript html dom

我在 DOM 中有一个元素,我使用 outerHTML 更新其 HTML属性,但我无法使用 remove() 之类的方法删除它.

<div id="element">Element</div>
<div id="remove">Removed element</div>
const element = document.getElementById("element");
const removedElement = document.getElementById("remove");

element.outerHTML = "<div>First</div>";
element.remove();
removedElement.remove();

在我的示例中,element 使用 outerHTML 进行更新,但我无法使用 remove() 方法删除它,而我可以删除轻松removedElement

这不是预期的。我在规范中遗漏了什么吗?我查阅过 W3C,但它对我来说非常先进。

并且,MDN 没有提及任何相关内容(除非我错过了一些内容)。我可以使用其他方法来更新 HTML 内容或从 DOM 中删除元素,但我很想知道最初的原因。

最佳答案

根据MDN :

while the element will be replaced in the document, the variable whose outerHTML property was set will still hold a reference to the original element

element变量仍然包含 <div id="element">Element</div> ,但不再位于文档树中,因此调用 remove()没有效果。

const element = document.getElementById("element");
element.outerHTML = "<div>First</div>";
console.log(element); // still has original contents
<div id="element">Element</div>

要保留对新元素的引用,请考虑使用 Element#replaceWithdocument.createElement .

const element = document.getElementById("element");
const newEl = Object.assign(document.createElement('div'), {textContent: 'First'});
element.replaceWith(newEl);
console.log(element);
console.log(newEl);
newEl.remove();
<div id="element">Element</div>

关于javascript - 如何删除已被outerHTML修改的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76595293/

相关文章:

javascript - 在 li 之后显示外层 div

javascript - Angular $http.post 将日期更改为 UTC 日期

javascript - 如何不用ajax方法单独提交表单

javascript - jquery 按下按钮点击元素

javascript - PhoneGap - 无法写入 Android 文件

javascript - JQuery 和 HTML : How to use echo $_POST to get data from one form to another

html - 具有相同类名的两个表,但对类的更改仅应用于一个表

python - 迭代可变数量的表行时出现 IndexError

html - 如何根据其他元素计算 css 的大小?

javascript - 无法从我的 Angular2 应用程序中连接到我的 WebSocket