在Javascript中,为什么在元素上设置outerHTML会将其parentNode设置为'null'
In Javascript, why does setting outerHTML on an element set its parentNode to 'null'?
在Javascript中,当我将DOM中元素的outerHTML设置为新值(例如,将其更改为不同的元素)时,其"parentNode"属性将设置为"null"。为什么?我希望它保持在outerHTML更改之前的任何值。
我猜DOM是通过解析"outerHTML"字符串来创建一个新对象,并使用它来替换原始对象。如果是这种情况,是否有一种方法可以检索新创建的对象?
复制步骤(在Linux Chrome和Linux Firefox上测试)
-
在浏览器中打开一个干净的窗口,
-
打开开发控制台(可能是F12)
-
查看页面DOM(Chrome中的Element选项卡,Firefox中的Inspector)
- 删除"身体"的任何子项,只是为了让事情更干净
-
打开控制台并键入:
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树中分离出来。
相关文章:
- 数组在递归方法中设置为null
- 未捕获的类型错误:无法设置属性'innerHTML'如果为null,则将脚本移动到正文不会;不起作用
- jQuery Modal Popup-回发后输入类型设置为null
- 无法设置属性'innerHTML'在javascript中为null
- JQuery在设置另一个值之前将附加值设置为null
- 如果为null,则设置javascript变量的值
- 为什么设置 element.className = null 会导致 class=“null”
- 未捕获的类型错误:无法设置属性'onclick'为null.已尝试window.onload
- Highcharts无法设置属性'的值;要点':对象为null或未定义
- 即使在 DOM 加载后也无法设置 null 的 .innerHTML
- 通过JavaScript设置null值
- 未捕获的类型错误:将 innerhtml 设置为数组中的字符串时,无法设置 null 的属性 'innerHTM
- HTML 错误无法设置 null 属性(匿名函数)
- 如果一个组不匹配,如何设置 NULL
- 未捕获的类型错误:无法设置 null.active 的属性“类名”
- 未捕获的类型错误:无法设置null的属性
- 无法设置null错误的innerHTML.尽管存在html ID
- 在javascript中设置null变量值为默认值
- 不能读取property 'removeChild'使用JSP设置null
- JavaScript 错误 msg : 未捕获的类型错误: 无法设置 null 的属性 'onclick'