回答:
jldupontの答えを拡張すると、ラッピング要素をその場で作成できます。
var target = document.getElementById('myElement');
var wrap = document.createElement('div');
wrap.appendChild(target.cloneNode(true));
alert(wrap.innerHTML);
実際のドキュメントで要素を削除して再挿入する必要がないように、要素を複製しています。ただし、印刷する要素の下に非常に大きなツリーがある場合は、コストがかかる可能性があります。
使用outerHTML
:
var el = document.getElementById( 'foo' );
alert( el.outerHTML );
outerHTML
FF11以降でサポートされています:developer.mozilla.org/en-US/docs/Web/API/element.outerHTML。
まず、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;
outerHTML
はブラウザ間の互換性がないことに注意してください。
div
:)スープに
document
...にない場合、それはどこにありますか?
フットプリントを軽くしたいが、スクリプトを長くしたい場合は、要素innerHTMLを取得し、空の親のみを作成して複製します。
function getHTML(who,lines){
if(!who || !who.tagName) return '';
var txt, ax, str, el= document.createElement('div');
el.appendChild(who.cloneNode(false));
txt= el.innerHTML;
ax= txt.indexOf('>')+1;
str= txt.substring(0, ax)+who.innerHTML+ txt.substring(ax);
el= null;
return lines? str.replace(/> *</g,'>\n<'): str;
//easier to read if elements are separated
}
outerHTMLはIEのみなので、次の関数を使用します。
function getOuterHtml(node) {
var parent = node.parentNode;
var element = document.createElement(parent.tagName);
element.appendChild(node);
var html = element.innerHTML;
parent.appendChild(node);
return html;
}
親タイプの偽の空の要素を作成し、その上でinnerHTMLを使用してから、要素を通常のdomに再アタッチします
あなたはそれがクロスブラウザであるためにこのような何かが欲しいでしょう。
function OuterHTML(element) {
var container = document.createElement("div");
container.appendChild(element.cloneNode(true));
return container.innerHTML;
}
element
、呼び出されたときにドキュメントから削除されますよね?
element.outerHTMLのサポートに基づいて関数outerHTMLを定義します。
var temp_container = document.createElement("div"); // empty div not added to DOM
if (temp_container.outerHTML){
var outerHTML = function(el){return el.outerHTML||el.nodeValue} // e.g. textnodes do not have outerHTML
} else { // when .outerHTML is not supported
var outerHTML = function(el){
var clone = el.cloneNode(true);
temp_container.appendChild(clone);
outerhtml = temp_container.innerHTML;
temp_container.removeChild(clone);
return outerhtml;
};
};
var el = document.getElementById('foo');
el.parentNode.innerHTML;