Использование setTimeout в анимации вывода текста
Есть код:
function effect(index1,tN,textString1) { //alert(tN.data); tN.data+=textString1[index1]; }// effect() function machineTextEffect(textString,textBodyElNode) { var textN=document.createTextNode(""); textBodyElNode.appendChild(textN); //textN.data=new String(""); for(var i=0;i<textString.length;i++) { //timerS=window. setTimeout(function(index1,tN1,s1){effect(index1,t N1,s1);}(i,textN,textString),408); //window.clearTimeout(timerS); } }// machineTextEffect() Он должен в цикле выводить по символу, в указанное место textBodyElNode, а на деле, используется один раз, и выдает ошибку вроде Error: useless setTimeout call (missing quotes around argument?) |
я ваш код не очень понял, написал чуть по-другому
<body> <div>.</div> <script> function typeText(elem, text) { var i = 0; var stop = false; var si = setInterval(function() { if(text.length === i) clearInterval(si); else { if(elem.textContent) elem.textContent += text[i]; else if(elem.innerText) elem.innerText += text[i]; } i++; }, 408); } var div = document.getElementsByTagName("div")[0]; typeText(div, "ololo ololo lololo lolo"); </script> </body> Поставил в <div> точку, потому что не выводит textContent в пустой div. Подскажите кто-нибудь, почему? |
BaVa,
потому что строки 10 и 12 непроверяют наличие свойства а проверяют наличие содержания -- а содержание пусто "" |
BaVa,
<body> <div></div> <script> function typeText(elem, text) { var i = 0; var stop = false; var si = setInterval(function() { if(text.length === i) clearInterval(si); else { if(elem.textContent !== undefined) elem.textContent += text[i]; else if(elem.innerText !== undefined) elem.innerText += text[i]; } i++; }, 408); } var div = document.getElementsByTagName("div")[0]; typeText(div, "ololo ololo lololo lolo"); </script> </body> или так <body> <div></div> <script> function typeText(elem, text) { var i = 0; var TextNode = document.createTextNode(''); elem.appendChild(TextNode); var si = setInterval(function() { if(text.length === i) clearInterval(si); else { TextNode.data += text[i] } i++; }, 408); } var div = document.getElementsByTagName("div")[0]; typeText(div, "ololo ololo lololo lolo"); </script> </body> |
Цитата:
|
рони,
понял) |
Часовой пояс GMT +3, время: 23:35. |