如何在javascript中获取DOM元素的HTML

Ric*_*d H 88 html javascript dom

想象一下,我有以下HTML:

<div><span><b>This is in bold</b></span></div>
Run Code Online (Sandbox Code Playgroud)

我想得到div的HTML,包括div本身.Element.innerHTML只返回:

<span>...</span>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢

Maj*_*kel 82

用途outerHTML:

var el = document.getElementById( 'foo' );
alert( el.outerHTML );
Run Code Online (Sandbox Code Playgroud)

  • 请注意,outerHTML是HTML5的一部分,因此每个人都应该及时支持. (17认同)
  • 自FF11起支持`outerHTML`:https://developer.mozilla.org/en-US/docs/Web/API/element.outerHTML. (6认同)
  • 不,它是IE扩展.虽然存在Firefox解决方法:http://snipplr.com/view/5460/outerhtml-in-firefox/ (2认同)
  • 根据http://www.quirksmode.org/dom/w3c_html.html,它应该适用于IE,Opera,Safari和Chrome. (2认同)

Jør*_*ode 81

扩展jldupont的答案,你可以动态创建一个包装元素:

var target = document.getElementById('myElement');
var wrap = document.createElement('div');
wrap.appendChild(target.cloneNode(true));
alert(wrap.innerHTML);
Run Code Online (Sandbox Code Playgroud)

我克隆元素以避免必须删除并重新插入实际文档中的元素.如果您要打印的元素下面有一棵非常大的树,这可能会很昂贵.

  • 现在是2013年,调用"domnode.outerHTML"适用于所有主流浏览器(自v11以来的FF) (19认同)
  • +1用于优秀但未充分利用的cloneNode (3认同)

jld*_*ont 8

首先,放置包含div问题的元素,在元素上放置一个id属性然后使用getElementById它:一旦你得到了这个元素,只需要'e.innerHTML`来检索HTML.

<div><span><b>This is in bold</b></span></div>

=> <div id="wrap"><div><span><b>This is in bold</b></span></div></div>

然后:

var e=document.getElementById("wrap");
var content=e.innerHTML;
Run Code Online (Sandbox Code Playgroud)

请注意,这outerHTML不是跨浏览器兼容的.

  • 是的我读了这个问题......你读过我的答案吗? (2认同)
  • 获取 div 父级的 innerHTML 的问题是我还将获取 div 兄弟姐妹的 innerHTML (2认同)

per*_*mon 6

老问题,但对于新来的人来说:

document.querySelector('div').outerHTML