This is much faster than using (el.innerHTML = value) when there are many existing descendants, because in some browsers, innerHTML spends much longer removing existing elements than it does creating new ones.
function replaceHtml(el, html) { var oldEl = (typeof el === "string" ? document.getElementById(el) : el); /*@cc_on // Pure innerHTML is slightly faster in IEoldEl.innerHTML = html;return oldEl;@*/ var newEl = oldEl.cloneNode(false); newEl.innerHTML = html; oldEl.parentNode.replaceChild(newEl, oldEl); /* Since we just removed the old element from the DOM, return a referenceto the new element, which can be used to restore variable references. */ return newEl;}; |