Вариант ... составляем масив текстовых нод, обнуляем их содержимое и востанавливаем по таймеру ... сохраняется любая вложенность тегов так как структура HTML остаёться неизменной
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<div id="test">«На наш взгляд, <a href=''>иностранные военные</a> присутствия в Афг<b>анис<i>тане</i> могут</b> и должны предпринять более активные усилия в борьбе с наркопроизводством в этой стране, раз уж <i>они практически</i> взяли на себя ответственность за вопросы безопасности в Афганистане», - сказано в сообщении.</div>
<script language="JavaScript" type="text/javascript">
var textNodes = [];
var textNodes_data = [];
var i=0;
function search_textNodes(b) {
b = b.childNodes;
for (var c = 0, d = b.length; c < d; c++) {
var a = b[c];
if (a.nodeType == 3) {
textNodes.push(a);
textNodes_data.push(a.data);
a.data = ""
} else a.hasChildNodes() && search_textNodes(a)
}
};
var d = document.getElementById('test');
search_textNodes(d);
function str_write() {
var a = textNodes_data[i];
if (a) {
textNodes[i].data += a.charAt(0);
textNodes_data[i] = a.substr(1)
} else i++;
i < textNodes.length && setTimeout(arguments.callee, 100)
};
str_write()
</script>
</body>
</html>