Imaginez que j'ai le HTML suivant :
<div><span><b>This is in bold</b></span></div>
Je veux obtenir le code HTML de la division, y compris la division elle-même. Element.innerHTML ne renvoie que :
<span>...</span>
Des idées ? Merci
Imaginez que j'ai le HTML suivant :
<div><span><b>This is in bold</b></span></div>
Je veux obtenir le code HTML de la division, y compris la division elle-même. Element.innerHTML ne renvoie que :
<span>...</span>
Des idées ? Merci
Non, c'est une extension d'IE. Bien qu'il existe des solutions de contournement pour Firefox : snipplr.com/view/5460/outerhtml-in-firefox
C'est certainement ce dont j'ai besoin bien qu'il s'agisse apparemment d'une extension IE. Je suis dans un environnement WebKit - je teste maintenant. Merci.
Dans le prolongement de la réponse de jldupont, vous pouvez créer un élément d'habillage à la volée :
var target = document.getElementById('myElement');
var wrap = document.createElement('div');
wrap.appendChild(target.cloneNode(true));
alert(wrap.innerHTML);
Je clone l'élément pour éviter de devoir le supprimer et le réinsérer dans le document réel. Cela peut cependant s'avérer coûteux si l'élément que vous souhaitez imprimer possède une très grande arborescence en dessous de lui.
Je me méfie un peu des éléments à détacher ou à attacher, mais je ne peux pas bousiller le DOM et je ne m'attends pas à ce qu'il y ait de grands arbres.
Sauf si monÉlément est un élément qui ne peut pas être un enfant d'un div, comme un li, une ligne de tableau ou une cellule de tableau, etc.
D'abord, mettez un élément qui enveloppe le div
en question, mettez un id
sur l'élément, puis utiliser l'attribut getElementById
une fois que vous avez lement, il suffit de faire 'e.innerHTML' pour récupérer le 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>
et ensuite :
var e=document.getElementById("wrap");
var content=e.innerHTML;
Note que outerHTML
n'est pas compatible avec les navigateurs.
Le problème de récupérer le innerHTML du parent de la div est que je vais aussi récupérer le innerHTML des frères et sœurs de la div.
C'est ma faute, je pensais que "mettre un attribut id sur l'élément" faisait référence à "l'élément". Avec votre dernière modification, il est beaucoup plus clair que vous voulez ajouter un attribut supplémentaire div
à la soupe :)
@J-P : si l'élément n'est pas dans le document
... alors où est-il, pouvez-vous nous éclairer ?
Comme outerHTML est uniquement IE, utilisez cette fonction :
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;
}
crée un faux élément vide du type parent et utilise innerHTML sur celui-ci, puis rattache l'élément au dom normal
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.