element.outerHTML - Web API 接口参考 编辑
element
DOM接口的outerHTML
属性获取描述元素(包括其后代)的序列化HTML片段。它也可以设置为用从给定字符串解析的节点替换元素。
要仅获取元素内容的HTML表示形式或替换元素的内容,请使用 innerHTML
属性
语法
let content = element.outerHTML;
返回时,内容包含描述元素及其后代的序列化HTML片段。
element.outerHTML = content;
将元素替换为通过使用元素的父作为片段解析算法的上下文节点解析字符串内容生成的节点。
例子
获取一个元素的outerHTML属性的值:
// HTML:
/*
<div id="d">
<p>Content</p>
<p>Further Elaborated</p>
</div>
*/
const d = document.getElementById("d");
console.log(d.outerHTML);
/*
字符串 '<div id="d"><p>Content</p><p>Further Elaborated</p></div>'
被显示到控制台窗口
*/
通过设置outerHTML属性来替换节点:
// HTML:
/*
<div id="container">
<div id="d">This is a div.</div>
</div>
*/
let container = document.getElementById("container");
let d = document.getElementById("d");
console.log(container.firstChild.nodeName);
// logs "div"
d.outerHTML = "<p>This paragraph replaced the original div.</p>";
console.log(container.firstChild.nodeName);
// logs "P"
/*
#d div不再是文档树的一部分,新段替换了它。
(不在页面中显示,但仍然在内存中)
*/
注意事项
如果元素没有父元素,即如果它是文档的根元素,则设置其outerHTML属性将抛出一个带有错误代码 NO_MODIFICATION_ALLOWED_ERR 的 DOMException
。例如:
document.documentElement.outerHTML = "test";
// 抛出一个 DOMException
此外,虽然元素将在文档中被替换,设置了outerHTML属性的变量仍将保持对原始元素的引用:
let p = document.getElementsByTagName("p")[0];
console.log(p.nodeName);
// 显示: "P"
p.outerHTML = "<div>This div replaced a paragraph.</div>";
console.log(p.nodeName);
// 仍然为: "P";
规范
Specification | Status | Comment |
---|---|---|
DOM Parsing and Serialization Element.outerHTML | Working Draft |
浏览器兼容性
We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!Feature | Firefox (Gecko) | Chrome | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 11 (11) | 0.2 | 4.0 | 7 | 1.3 |
Feature | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Basic support | (Yes) | 11.0 (11) | (Yes) | (Yes) | (Yes) |
相关链接
- MSDN: outerHTML 属性
- You Don't Need jQuery
- http://youmightnotneedjquery.com/
- insertAdjacentHTML
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论