Использование 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, время: 15:24. |