Necesito poder agregar elementos a una página con una cadena de texto en bruto de HTML, incluyendo cualquier cantidad de etiquetas, atributos, etc. Idealmente, me gustaría poder hacer algo así como con cualquier cadena arbitraria de html bien formado;Agregue elementos al DOM dado HTML de texto sin formato usando solo JavaScript puro (no jQuery)
var theElement = document.createElement("<h1 id='title'>Some Title</h1><span style="display:inline-block; width=100px;">Some arbitrary text</span>");
document.getElementById("body").appendChild(theElement);
Obviamente, eso no funciona, estoy buscando buenas maneras de lograr el mismo resultado. Me gustaría evitar analizar el HTML si es posible. Tengo muchas restricciones sobre las herramientas que puedo usar, no jQuery o fuera incluye y debe ser compatible con navegador cruzado y compatible con IE6. Cualquier ayuda sería enorme.
Debe usar un [DocumentFragment] (http://ejohn.org/blog/dom-documentfragments/) en lugar de un div; será más rápido y mucho más fácil mover los nodos secundarios. ** Editar **: Scratch ese comentario, ya que no puede establecer 'innerHTML' de un DocumentFragment. – Phrogz
la edición para cambiar al ciclo while solucionó el problema con el ciclo for utilizando un índice, ya que appendChild elimina realmente el elemento del div para agregarlo al cuerpo. La clonación del nodo hijo es una forma menos elegante de hacer esto también. – kirps
@kirps: sí, finalmente probé ese código de muestra y descubrí el comportamiento extraño de "appendChild" y su efecto sobre el atributo "secundario" del elemento primario que lo contiene. – maerics