Как-то так. Только вложенность тегов не поддерживается. Если надо морочтесь с рекурсией самостоятельно.)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript">
window.onload=function()
{
var doc=document.getElementById('test');
var text=doc.innerText?'innerText':'textContent';
var cn=doc.childNodes, i=cn.length; //берем все ноды
var strings=[];
while(i--){
strings.unshift(cn[i][text]);
cn[i][text]='';
} //проходим собирая всеь текст в вспогательный массив strings, то на странице остаются лишь теги(можно добавить проверку на тип ноды и не текстовым добавлять displasy:none)
var ch=0,node=0;
function echo()
{
if(strings[node].length<=++ch){
ch=0;
if(!strings[++node]){ //в случае если нод больше нет - омтанавливаемся
clearInterval(interval)
return false;
}
}
cn[node][text]+=strings[node].charAt(ch);
}
var interval = setInterval(echo,50);
}
</script>
</head>
<body>
<div id="test">«На наш взгляд, <a href=''>иностранные военные</a> присутствия в Афг<b>анистане могут</b> и должны предпринять более активные усилия в борьбе с наркопроизводством в этой стране, раз уж <i>они практически</i> взяли на себя ответственность за вопросы безопасности в Афганистане», - сказано в сообщении.</div>
</body>
</html>