В Javascript, почему установка outerHTML на элементе устанавливает его parentNode в "null"?

в Javascript, когда я устанавливаю outerHTML элемента в DOM на новое значение (например, чтобы изменить его на другой элемент), его свойство "parentNode" получает значение "null". Почему? Я ожидал бы, что он останется в любом значении, в котором он был до изменения outerHTML.

Я предполагаю, что DOM создает новый объект из разбора строки "outerHTML" и использует его для замены исходного объекта. Если это так, есть ли метод для извлечения этого вновь созданного объект?

шаги для воспроизведения (протестировано на Linux Chrome & Linux Firefox)

  1. открыть чистое окно в вашем браузере,

  2. Откройте консоль разработчика (возможно, F12)

  3. взгляните на страницу DOM (вкладка "элемент" в Chrome, инспектор в Firefox)

  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 - Теперь пишет 'нуль' в консоли.

1 ответов


Это как doc

кроме того, в то время как элемент будет заменен в документе, переменная чье свойство outerHTML был установлен еще содержать ссылку на оригинальный элемент:

что означает obj1 в вашем коде все еще ссылаются на исходный элемент, который был отделен от дерева DOM к настоящему времени.