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

在Javascript中,为什么在元素上设置outerHTML会将其parentNode设置为';空';?,javascript,html,dom,Javascript,Html,Dom,在Javascript中,当我将DOM中某个元素的outerHTML设置为新值(例如,将其更改为其他元素)时,其“parentNode”属性将设置为“null”。为什么?我希望它保持在outerHTML更改之前的任何值 我猜DOM正在通过解析“outerHTML”字符串并使用它替换原始对象来创建一个新对象。如果是这种情况,是否有方法检索新创建的对象 复制步骤(在Linux Chrome和Linux Firefox上测试) 在浏览器中打开一个干净的窗口 打开开发控制台(可能是F12) 看看页面DO

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

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

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

  • 在浏览器中打开一个干净的窗口

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

  • 看看页面DOM(Chrome中的元素选项卡,Firefox中的检查器)

  • 删除“body”的所有子项,只是为了让事情更干净
  • 打开控制台并键入:

    obj1=document.createElement('div')

    obj1.id='1'

    document.body.appendChild(obj1)

    obj1.parentNode
    -应将“body”HTML写入控制台

    obj1.outerHTML=”“

    obj1.parentNode
    -现在将“null”写入控制台

  • 这是根据

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

    这意味着您的代码中的
    obj1
    仍然是指现在已从DOM树中分离的原始元素。

    相关: