Wyobraź sobie, że mam następujący HTML:
<div><span><b>This is in bold</b></span></div>
Chcę pobrać kod HTML dla elementu div, w tym samego elementu div. Element.innerHTML zwraca tylko:
<span>...</span>
Jakieś pomysły? Dzięki
javascript
html
dom
Richard H.
źródło
źródło
Zastosowanie
outerHTML
:var el = document.getElementById( 'foo' ); alert( el.outerHTML );
źródło
outerHTML
jest obsługiwany od FF11: developer.mozilla.org/en-US/docs/Web/API/element.outerHTML .Najpierw umieść element, który zawija dane
div
pytanie, umieśćid
atrybut na elemencie, a następnie użyjgetElementById
na nim: kiedy już masz lement, po prostu zrób 'e.innerHTML`, aby pobrać 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>
i wtedy:
var e=document.getElementById("wrap"); var content=e.innerHTML;
Zauważ, że
outerHTML
nie jest kompatybilny z różnymi przeglądarkami.źródło
div
do zupy :)document
... to gdzie on jest, czy chcesz nas wszystkich oświecić?Jeśli chcesz mieć lżejszy ślad, ale dłuższy skrypt, pobierz elementy innerHTML i utwórz i sklonuj tylko pusty element nadrzędny-
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 }
źródło
var x = $('#container').get(0).outerHTML;
źródło
ponieważ externalHTML to tylko IE, użyj tej funkcji:
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; }
tworzy fałszywy pusty element typu parent i używa na nim innerHTML a następnie ponownie przyłącza element z powrotem do normalnego dom
źródło
Będziesz chciał coś takiego, aby było to między przeglądarkami.
function OuterHTML(element) { var container = document.createElement("div"); container.appendChild(element.cloneNode(true)); return container.innerHTML; }
źródło
element
z dokumentu po wywołaniu, prawda?stare pytanie, ale dla nowo przybyłych, którzy się pojawią:
document.querySelector('div').outerHTML
źródło
zdefiniuj funkcję externalHTML w oparciu o obsługę elementu.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; }; };
źródło
var el = document.getElementById('foo'); el.parentNode.innerHTML;
źródło