В Javascript, почему установка outerHTML на элементе устанавливает его parentNode в "null"?
в Javascript, когда я устанавливаю outerHTML элемента в DOM на новое значение (например, чтобы изменить его на другой элемент), его свойство "parentNode" получает значение "null". Почему? Я ожидал бы, что он останется в любом значении, в котором он был до изменения outerHTML.
Я предполагаю, что DOM создает новый объект из разбора строки "outerHTML" и использует его для замены исходного объекта. Если это так, есть ли метод для извлечения этого вновь созданного объект?
шаги для воспроизведения (протестировано на Linux Chrome & Linux Firefox)
открыть чистое окно в вашем браузере,
Откройте консоль разработчика (возможно, F12)
взгляните на страницу DOM (вкладка "элемент" в Chrome, инспектор в Firefox)
- удалить любые дети "тела", просто чтобы сделать вещи чище
-
Откройте консоль и тип:
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 к настоящему времени.