experiments/dom.html [103:149]: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function elt(parent, name, className, content) { var el = document.createElement(name); if (content) { el.appendChild(document.createTextNode(content)) } parent && parent.appendChild(el) el.className = className return el; } function txtEl(parent, str) { return parent.appendChild(document.createTextNode(str)) } function clearEl(el, l) { while (l --> 0) el.removeChild(el.lastChild); } function update(rootEl, lines) { var ch = rootEl.childNodes for (var i = 0; i < lines.length; i++) { if (ch[i]) { var el = ch[i] el.className = "line" } else var el = elt(rootEl, "div", "line") renderLine(el, lines[i]) } clearEl(rootEl, ch.length - i) } function renderLine(rootEl, tokens) { var ch = rootEl.childNodes for (var i = 0; i < tokens.length; i ++) { if (ch[i]) { var el = ch[i] el.className = tokens[i] el.firstChild.nodeValue = tokens[i] } else elt(rootEl, "span", tokens[i], tokens[i]) } clearEl(rootEl, ch.length - i) } return update; } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - experiments/dom.html [297:343]: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function elt(parent, name, className, content) { var el = document.createElement(name); if (content) { el.appendChild(document.createTextNode(content)) } parent && parent.appendChild(el) el.className = className return el; } function txtEl(parent, str) { return parent.appendChild(document.createTextNode(str)) } function clearEl(el, l) { while (l --> 0) el.removeChild(el.lastChild); } function update(rootEl, lines) { var ch = rootEl.childNodes for (var i = 0; i < lines.length; i++) { if (ch[i]) { var el = ch[i] el.className = "line" } else var el = elt(rootEl, "div", "line") renderLine(el, lines[i]) } clearEl(rootEl, ch.length - i) } function renderLine(rootEl, tokens) { var ch = rootEl.childNodes for (var i = 0; i < tokens.length; i ++) { if (ch[i]) { var el = ch[i] el.className = tokens[i] el.firstChild.nodeValue = tokens[i] } else elt(rootEl, "span", tokens[i], tokens[i]) } clearEl(rootEl, ch.length - i) } return update; } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -