 
			
				19.03.2014, 22:27
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.08.2013 
					
					
					
						Сообщений: 21
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Эффект печатной машинки
			 
			
		
		
		
		Всем доброй ночи. Хотелось бы реализовать эффект печатной машинки на сайте, чтобы буквы печатались через определенный интервал. Есть такой код, который работает корректно, но желаемого результата не дает. Подскажите, в чем ошибка. Код написан на jQuery: 
$.fn.typewriter = function(params) {
        var params = params || {},
            repeat = 'undefined' !== typeof params.repeat && ('boolean' === typeof params.repeat || 'number' === typeof params.repeat && (params.repeat === 0 || params.repeat === 1)) ? !!params.repeat : true,
            speed = 'undefined' !== typeof params.speed && 'number' === typeof params.speed && params.speed > 0 ? params.speed : 150;
        
        return this.each(function() {
            var $this = $(this),
                text = $.trim($this.text());
            
            setTimeout(function() {
                var line = ' ' + text,
                    i = 0;
                
                if (i++ < line.length) {
                    $this.text($this.text().substring(1, i));
                } else {
                    if (repeat === false) {
                        exit();
                    } else {
                        $this.text(' ');
                        i = 0;
                    }
                }
            }, speed);
        });
    };
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				19.03.2014, 22:38
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 16.03.2010 
					
					
					
						Сообщений: 1,618
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		setTimeout вызывает коллбэк один раз, используй  setInterval. И  exit() - это твои фантазии. Используй  clearInterval.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				19.03.2014, 22:49
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.08.2013 
					
					
					
						Сообщений: 21
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Не помогло   
P.S.: Cорри, exit() с PHP перепутал    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				19.03.2014, 23:01
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.08.2013 
					
					
					
						Сообщений: 21
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Проблема решена   
Тему можно закрывать.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				19.03.2014, 23:52
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Печатная машинка
			 
			
		
		
		
		seniormelikyan, 
 Вариант    
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<style type="text/css">
 div{
   font-size: 24px;
   height: 30px;
 }
</style>
<script src="https://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$.fn.typewriter = function (params) {
    function writer(elem, text, speed, repeat) {
    var i = 0,
        TextNode = document.createTextNode("");
        elem.appendChild(TextNode);
        elem.timer = setInterval(function () {
            if (text.length === i) repeat ? (i = 0, TextNode.data = "") : clearInterval(elem.timer);
            else
                for (TextNode.data += text[i++];" " === text[i];) TextNode.data += text[i++]
        }, speed)
    }
    var options = {
        speed: 500,
        repeat: false
    }, options = $.extend(options, params);
    return this.each(function () {
        var text = $(this).text();
        $(this).text("");
        writer(this, text, options.speed, options.repeat)
    })
};
</script>
<script type="text/javascript">
$(window).load(function(){
$(".one").typewriter({repeat: true});
$(".too").typewriter();
});
</script>
  <title></title>
</head>
<body>
<div class="one">Всем доброй ночи.</div>
<div class="too">Код написан на jQuery.</div>
</body>
</html>
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось рони, 18.12.2019 в 23:19.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.03.2014, 00:19
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.03.2013 
					
					
					
						Сообщений: 1,572
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
<div id="data"></div>
<script>
(function () {
var str = 'Привет форум JavaScript',
	len = str.length,
	i = 0,
	tId = setInterval(function () {
	  data.innerHTML += str[i++];
	  if (i == len) clearInterval(tId);
	}, 400);
}());
</script>
<div id="data"></div>
<script>
(function () {
var str = 'Привет форум JavaScript',
	len = str.length + 1,
	i = 0;
	setInterval(function () {
	  data.innerHTML += str[i++];
	  if (i == len) data.innerHTML = '', i = 0;
	}, 400);
}());
</script>
мой вариант    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.04.2017, 17:24
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 30.12.2015 
					
					
					
						Сообщений: 94
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Подскажите, пожалуйста, как сделать перенос строки? 
<p id="data"></p>
<script>
(function () {
var str = 'Первая строка <br> Вторая строка!',
	len = str.length,
	i = 0,
	tId = setInterval(function () {
	  data.innerHTML += str[i++];
	  if (i == len) clearInterval(tId);
	}, 50);
}());
</script>
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Feex, 18.04.2017 в 17:28.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.04.2017, 17:47
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Feex,
  
<p id="data"></p>
<script>
(function () {
var str = 'Первая строка <br> Вторая строка!',
  len = str.length,
  i = 0,
  a,
  tId = setInterval(function () {
    a = str[i];
    if(a == '<') {a = '<br>'; i += 4 }
    else i++
    data.innerHTML += a;
    if (i == len) clearInterval(tId);
  }, 50);
}());
</script>
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.04.2017, 18:02
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 30.12.2015 
					
					
					
						Сообщений: 94
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от рони
			 
		
	 | 
 
	
		Feex, 
 
<p id="data"></p>
<script>
(function () {
var str = 'Первая строка <br> Вторая строка!',
  len = str.length,
  i = 0,
  a,
  tId = setInterval(function () {
    a = str[i];
    if(a == '<') {a = '<br>'; i += 4 }
    else i++
    data.innerHTML += a;
    if (i == len) clearInterval(tId);
  }, 50);
}());
</script>
	 | 
 
	
 
 Рони, Как всегда, спасибо!!!  
В этой  теме есть решение, Ваше, кстати, просто отличный вариант, но хотелось что-то по-легче) 
В общем, Спасибо еще раз)  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |