Javascript 包含标记的innerHTML
可能重复:Javascript 包含标记的innerHTML,javascript,innerhtml,Javascript,Innerhtml,可能重复: 有人能告诉我一个使用javascript的方法吗?我可以用它来获取元素的innerHTML,包括标记 请不要用jQuery 编辑: 最佳方法: function outerHTML(node){ // if IE, Chrome take the internal method otherwise build one return node.outerHTML || ( function(n){ var div = document.cr
有人能告诉我一个使用javascript的方法吗?我可以用它来获取元素的
innerHTML
,包括标记
请不要用jQuery
编辑:
最佳方法:
function outerHTML(node){
// if IE, Chrome take the internal method otherwise build one
return node.outerHTML || (
function(n){
var div = document.createElement('div'), h;
div.appendChild( n.cloneNode(true) );
h = div.innerHTML;
div = null;
return h;
})(node);
}
感谢下面的@Joel提供的。标准方法就是使用innerHTML属性
document.getElementById("element").innerHTML;
document.getElementById("element").outerHTML;
这将获得元素中所有HTML的全文。要获取元素本身,可以使用outerHTML属性
document.getElementById("element").innerHTML;
document.getElementById("element").outerHTML;
我不喜欢发布的功能,所以我认为这是更好的。请注意,IE对innerHTML和outerHTML属性的事件侦听器有不同的处理方式(这是一个一般性的注释,并不特定于以下内容),因此请小心。序列化算法也存在差异,因此您可能无法从所有浏览器获得完全相同的内部或外部TML 下面的第一个版本本质上是之前发布的版本的一个更高效的版本,它对outerHTML属性的存在使用了更好的测试(在我看来),而且它更高效,因为它不会每次都创建新函数,并且重新使用保存在闭包中的div,而不是每次都创建一个新函数。请注意,它仅对不支持outerHTML的浏览器执行此操作,否则不会保留临时div 第二个版本是首选版本,它与上面的版本非常相似,但不是获取克隆的innerHTML,而是使用实际节点,临时将其替换为自身的浅克隆,将其移动到div,获取div的innerHTML,然后将其放回。浅层克隆是必需的,因此临时替换可以维护有效的DOM(例如,可能正在获取只能用tr替换的tr的outerHTML)
我希望元素的内容包括开始和结束标记,因此它不会返回
段落内容
,而是返回如下内容:段落内容
好的,将其修改为包含元素本身。不可能这么简单吗?我使用innerHTML
已经有十年了,根本不知道outerHTML
是否存在哈哈。我在到处寻找这个。这将帮助我打印一个元素,包括它的ID和类,以保持应用于它的样式:function PrintElm(elm){let win=window.open(''PRINT','height=400,width=600');win.document.write(document.getElementById(elm).outerHTML)
…这看起来非常类似。顺便说一句,您想要的通常称为“外部HTML”。同意。我会检查这个问题的答案,因为它们实际上是相同的。@Joel感谢链接。没有看到那个问题。没问题。这就是为什么我给了您“外部HTML”的术语。我通过Google outer HTML找到了答案。我不确定这是一个好的解决方案。每次调用它时,它都会创建一个新的函数对象,这是非常低效的。此外,如果浏览器不支持outerHTML,我不确定您是否可以根据HTML5 HTML片段序列化算法依赖它的innerHTML。毕竟,innerHTML是一个专有的在HTML5之前,etary DOM属性与浏览器之间存在一些显著的差异。您可以作为一个临时函数来处理这些问题,但我肯定不会依赖它作为一个通用的解决方案。