Создать строку из HTMLDivElement
То, что я хотел бы сделать, это создать строку из объекта HTMLElement JavaScript. Например:
var day = document.createElement("div");
day.className = "day";
day.textContent = "Random Text";
Теперь мы создали объект day
HTMLDivElement, можно ли его печатать как строку? например.
<div class="day">Random Text</div>
Ответы
Ответ 1
Вариант обертки Gump, так как его реализация лишает цель node из документа.
function nodeToString ( node ) {
var tmpNode = document.createElement( "div" );
tmpNode.appendChild( node.cloneNode( true ) );
var str = tmpNode.innerHTML;
tmpNode = node = null; // prevent memory leaks in IE
return str;
}
Чтобы напечатать результирующую строку на экране (re: escaped)
var escapedStr = nodeToString( node ).replace( "<" , "<" ).replace( ">" , ">");
outputNode.innerHTML += escapedStr;
Обратите внимание, что такие атрибуты, как "класс", "id" и т.д., строятся правильно.
Ответ 2
Вы можете использовать эту функцию (взятую из pure.js)
function outerHTML(node){
return node.outerHTML || new XMLSerializer().serializeToString(node);
}
Ответ 3
Вы можете обернуть этот элемент в другой элемент и использовать innerHTML
на нем:
var wrapper = document.createElement("div");
wrapper.appendChild(day);
var str = wrapper.innerHTML;
Ответ 4
Вам нужно создать текст node, чтобы добавить текст для созданного элемента следующим образом:
var day = document.createElement("div");
day.className = "day";
// create text node
var txt = document.createTextNode('Random Text');
// add text to div now
day.appendChild(txt);
// append to body
document.body.appendChild(day);
Ответ 5
Почему вы используете createElement
, если вы также можете напрямую разобрать строку?
Например: var string = '<div class="' + class + '">' + text + '</div>';