Abyste se nehádali, tak pravdu v podstatě nemáte ani jeden, protože takhle je to strašně neuniverzální. V praxi přece nebudete vypisovat text do jednoho jediného elementu a už nikdy jinak(a pokud ano, tak copy/paste?). Jinak Sheldonizátor má správnou připomínku ohledně querySelectoru, který sice může být naopak v extrémnějších případech výhodné nahradit za getElementById kvůli výkonu, ale jinak při běžném použití dokáže neuvěřitelně usnadnit práci. Tu funkci bych osobně viděl nějak takhle:
/**
* Animovaný výpis textu
*
* @method writer
* @param {String} text Text k vypsání
* @param {Number} [delay=50] Prodleva mezi znaky v milisekundách
*/
function writer(element, text, delay) {
delay = delay || 50;
element.innerHTML = '';
var interval = setInterval(function() {
if (text.length) {
element.innerHTML += text[0];
text = text.substring(1);
}
else
clearInterval(interval);
}, delay);
}
// Test
window.onload = function() {
writer(document.querySelector('#test'), 'Helllllllllllllllllllllllllllllllo');
writer(document.querySelector('.test'), 'Worlllllllllllllllllllllllllllllld!');
};