outerhtml可获取或替换当前元素及其完整html结构;获取时返回含开始标签、属性、内容和结束标签的字符串,赋值时则原地销毁并重建元素,导致事件监听器和js属性丢失。

直接用 element.outerHTML 就能获取或替换包含当前节点自身的完整 HTML 结构——它既返回整个标签(含开始、结束标签及所有属性),也支持赋值来整体替换该元素。
获取当前节点及其全部 HTML(含自身)
outerHTML 的核心作用就是“带壳导出”:不只是内容,连这个元素自己一起打包成字符串。
- 语法简洁:
const html = elem.outerHTML; - 结果示例:若
<div id="box"><p>Hi</p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill7377" title="Java Maven Secondary Analysis"><img src="https://img.php.cn/upload/skill/000/000/081/179144831942131.jpg" alt="Java Maven Secondary Analysis" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/xiazai/skill7377" title="Java Maven Secondary Analysis" class="overflowclass">Java Maven Secondary Analysis</a> <p class="overflowclass">分析ZIP压缩包或GitLab仓库中的Java Maven项目,确定二次开发范围、类数量、模块分布及生产相关指标。</p> </div> <a rel="nofollow" href="/xiazai/skill7377" title="Java Maven Secondary Analysis" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div></div>是目标元素,则elem.outerHTML返回的就是完整的"<div id='\"box\"'><p>Hi</p></div>",不含额外换行或空格(浏览器自动标准化) - 注意:它只读取当前节点一级结构,不会递归展开父级或兄弟节点
用 outerHTML 替换整个元素(含自身)
给 outerHTML 赋值,相当于在 DOM 中“原地销毁并重建”这个元素——旧节点被移除,新 HTML 字符串被解析插入原位置。
- 写法:
elem.outerHTML = "<section class='\"new\"'>Replaced!</section>"; - 效果:原来那个
<div id="box">...</div>完全消失,替换成新的<section></section>元素 - ⚠️ 关键副作用:原元素上绑定的所有事件监听器、自定义属性(如
elem.myData = xxx)、以及通过 JS 直接附加的状态都会丢失
和 innerHTML 的关键区别
别混淆这两个常用属性:
- innerHTML:只管“两标签之间”,即子内容。改它,元素本身还在,只是内部重绘
- outerHTML:管“从开始标签到结束标签的全部”,包括元素自己。改它,等于把整个盒子连同包装一起换掉
- 举例:对
<button id="btn">Click</button>,btn.innerHTML = "Go"后仍是<button></button>;而btn.outerHTML = "@#@#@#@#@#@#@#@#@#@0"后按钮彻底变成链接,DOM 中再无btn这个 button 元素
jQuery 中怎么用 outerHTML
jQuery 本身没提供 .outerHTML() 方法,但可通过 .prop("outerHTML") 访问原生属性:
- 获取:
$("div.test").prop("outerHTML") - 设置:
$("div.test").prop("outerHTML", "<span>New</span>") - 不推荐用
.attr("outerHTML"),因为它是 HTML 属性而非 DOM 属性,无法读写
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










