Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.09.2013, 23:51
Новичок на форуме
Отправить личное сообщение для brianosally Посмотреть профиль Найти все сообщения от brianosally
 
Регистрация: 05.09.2013
Сообщений: 1

Использование 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?)
Ответить с цитированием
  #2 (permalink)  
Старый 06.09.2013, 00:45
Аватар для BaVa
Аспирант
Отправить личное сообщение для BaVa Посмотреть профиль Найти все сообщения от BaVa
 
Регистрация: 16.11.2011
Сообщений: 60

я ваш код не очень понял, написал чуть по-другому
<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, 06.09.2013 в 00:50.
Ответить с цитированием
  #3 (permalink)  
Старый 06.09.2013, 01:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

BaVa,
потому что строки 10 и 12 непроверяют наличие свойства а проверяют наличие содержания -- а содержание пусто ""
Ответить с цитированием
  #4 (permalink)  
Старый 06.09.2013, 01:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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>

Последний раз редактировалось рони, 06.09.2013 в 01:35.
Ответить с цитированием
  #5 (permalink)  
Старый 06.09.2013, 04:54
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Сообщение от brianosally
setTimeout(function(index1,tN1,s1){effect(index1,t N1,s1);}(i,textN,textString),408);
Вы первым аргументом выполняете ф-цию и в setTimeout передаётся undefined, поэтому такая ошибка.
Ответить с цитированием
  #6 (permalink)  
Старый 06.09.2013, 10:33
Аватар для BaVa
Аспирант
Отправить личное сообщение для BaVa Посмотреть профиль Найти все сообщения от BaVa
 
Регистрация: 16.11.2011
Сообщений: 60

рони,
понял)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какие способы вывода текста в <div>? Zim_one Общие вопросы Javascript 2 01.11.2012 10:11
SetTimeout правильное использование nata031189 Общие вопросы Javascript 5 07.07.2012 11:32
Скрипт для вывода текста поверх картинки sergeus Работа 1 19.02.2012 06:01
jQuery Использование textIndent при анимации slim-v Opera, Safari и др. 26 19.12.2010 18:16
Использование метода setTimeout News Общие вопросы Javascript 3 18.09.2008 20:37