在Javascript中,为什么在元素上设置outerHTML会将其parentNode设置为'null'

In Javascript, why does setting outerHTML on an element set its parentNode to 'null'?

本文关键字:设置 null parentNode outerHTML Javascript 为什么 元素      更新时间:2023-09-26

在Javascript中,当我将DOM中元素的outerHTML设置为新值(例如,将其更改为不同的元素)时,其"parentNode"属性将设置为"null"。为什么?我希望它保持在outerHTML更改之前的任何值。

我猜DOM是通过解析"outerHTML"字符串来创建一个新对象,并使用它来替换原始对象。如果是这种情况,是否有一种方法可以检索新创建的对象?

复制步骤(在Linux Chrome和Linux Firefox上测试)

  1. 在浏览器中打开一个干净的窗口,

  2. 打开开发控制台(可能是F12)

  3. 查看页面DOM(Chrome中的Element选项卡,Firefox中的Inspector)

  4. 删除"身体"的任何子项,只是为了让事情更干净
  5. 打开控制台并键入:

    obj1 = document.createElement('div')

    obj1.id = '1'

    document.body.appendChild(obj1);

    obj1.parentNode-应该将"body"HTML写入控制台。

    obj1.outerHTML = "<div id='2'></div>"

    obj1.parentNode-现在将"null"写入控制台。

这是根据文档

此外,虽然元素将在文档中被替换,但变量其outerHTML属性已设置,但仍将保留对原始元素:

这意味着您的代码中的obj1仍然引用了原始元素,该元素现在已经从DOM树中分离出来。