Javascript : 노드 (요소 또는 문서)의 DOM 표현이 있고 그 문자열 표현을 찾고 있습니다. 예 :
var el = document.createElement("p");
el.appendChild(document.createTextNode("Test"));
산출해야합니다 :
get_string(el) == "<p>Test</p>";
나는 사소한 일을 놓치고 있다는 강한 느낌을 가지고 있지만 IE, FF, Safari 및 Opera에서 작동하는 방법을 찾지 못했습니다. 따라서 outerHTML은 옵션이 아닙니다.
답변
임시 부모 노드를 만들고 그 내부 HTML 콘텐츠를 가져올 수 있습니다.
var el = document.createElement("p");
el.appendChild(document.createTextNode("Test"));
var tmp = document.createElement("div");
tmp.appendChild(el);
console.log(tmp.innerHTML); // <p>Test</p>
편집 :
outerHTML에 대한 아래 답변을 참조하십시오. el.outerHTML 만 있으면됩니다.
답변
당신이 찾고있는 것은 ‘outerHTML’이지만 이전 브라우저와 호환되지 않는 대체 coz가 필요합니다.
var getString = (function() {
var DIV = document.createElement("div");
if ('outerHTML' in DIV)
return function(node) {
return node.outerHTML;
};
return function(node) {
var div = DIV.cloneNode();
div.appendChild(node.cloneNode(true));
return div.innerHTML;
};
})();
// getString(el) == "<p>Test</p>"
내 jQuery 플러그인은 여기에서 찾을 수 있습니다. 선택한 요소의 외부 HTML 가져 오기
답변
나는 이것을 위해 복잡한 스크립트가 필요하다고 생각하지 않습니다. 그냥 사용
get_string=(el)=>el.outerHTML;
답변
FF에서 XMLSerializer
객체를 사용하여 XML을 문자열로 직렬화 할 수 있습니다 . IE는 xml
노드 의 속성을 제공 합니다. 따라서 다음을 수행 할 수 있습니다.
function xml2string(node) {
if (typeof(XMLSerializer) !== 'undefined') {
var serializer = new XMLSerializer();
return serializer.serializeToString(node);
} else if (node.xml) {
return node.xml;
}
}
답변
Element # outerHTML 사용 :
var el = document.createElement("p");
el.appendChild(document.createTextNode("Test"));
console.log(el.outerHTML);
DOM 요소를 작성하는데도 사용할 수 있습니다. Mozilla 문서에서 :
요소 DOM 인터페이스의 outerHTML 속성은 하위 요소를 포함하여 요소를 설명하는 직렬화 된 HTML 조각을 가져옵니다. 지정된 문자열에서 구문 분석 된 노드로 요소를 대체하도록 설정할 수 있습니다.
https://developer.mozilla.org/en-US/docs/Web/API/Element/outerHTML
답변
element.outerHTML을 사용하여 외부 태그 및 속성을 포함하여 요소의 전체 표현을 가져옵니다.
답변
요소에 부모가있는 경우
element.parentElement.innerHTML