Sisältö ilman innerHTMLää

feenix 15.07.06 10:12

Koska innerHTML ei ole speksinmukaista, on kiltimpää tehdä jonkun noden sisällön korvaus DOMin kautta. Tässä Javascript-pätkä asian hoitamiseen.

 Tekstiversio  Arvo: 3 (7 ääntä)  Äänestä: +  -
// src == node, joka sisältää kopioitavan datan. nodea itsessään ei kopioida
// dst == node, johon sisältö kopioidaan

function setcontents(src, dest)
{
	var i = src.firstChild;
	while (i != null)
	{
		if (i.nodeType == 1)
		{
			dest.appendChild(document.createElement(i.nodeName));
			for (l=0; l<i.attributes.length; l++)
				dest.lastChild.setAttribute(i.attributes[l].nodeName, i.attributes[l].nodeValue)
			setcontents(i, dest.lastChild);
		}
		else
			dest.appendChild(document.createTextNode(i.nodeValue));
		i = i.nextSibling
	}
}

// Funktio on mahdollista muuttaa ei-rekursiiviseksi ja olettaa ettei sorsassa ole kuin tekstiä tai täkyjä

eis 14:16 1.8.06 
Esimerkki voisi olla kiva.
xliqz 10:21 7.9.06 
eipä sellasta kaipaa jos jotain edes tajuaa alkeista ;[
raimo 13:27 8.12.06 
http://r2.atspace.org/ajax-xml.xhtml
hiukan muutin, koska Opera antaa muuten null-juttuja.