Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Повтор выполнения скрипта (https://javascript.ru/forum/jquery/64305-povtor-vypolneniya-skripta.html)

folkemon 02.08.2016 13:56

Повтор выполнения скрипта
 
Доброго времени суток,
Помогите решить проблему, есть код скрипта, но выполняется он одноразово, а как можно его сделать что бы выполнялся бесконечно
$(document).ready(function(){
 $.fn.animate_Text = function() {
  var string = this.text();
  return this.each(function(){
   var $this = $(this);
   string=string.replace(/./g, '<span class="new">$&</span>');
$this.html(string.replace(/~/g, '<br />'));
   $this.find('span.new').each(function(i, el){
    setTimeout(function(){ $(el).addClass('div_opacity'); }, 10 * i);
   });
  });
 };
 $('#example').show();
 $('#example').animate_Text();
});

рони 02.08.2016 15:34

folkemon,
на форуме сто пятьсот печатающих машинок ...
http://javascript.ru/forum/misc/6175...ajjmingom.html

http://javascript.ru/forum/misc/4589...-mashinki.html

http://javascript.ru/forum/events/35...tml#post235186

folkemon 03.08.2016 07:36

Спасибо Рони за совет, действительно сделано проще,
а не подскажите, почему не работает в таком виде код?
<head>
  <style>
    body {
      height: 1200px;
    }
  </style>
</head>
<body>
<div id="data"></div>
<script>
	$(window).scroll(function(){
	if ($(this).scrollTop() > 400) {
	firstScript ();}
	}
	$(window).scroll(function(){
	if ($(this).scrollTop() < 800) {
	firstScript ();}
	}
	var firstScript = function () {
	var str = 'Основной сложностью в работе с закупками является является поиск тендеров, которые проводятся заказчиками и касаются товаров, работ у услуг поставляемых исполнителем. Поиск торгов – ответственный и сложный этап организации участия в тендере и от того, насколько качественно и профессионально он организован, во многом зависит его благоприятный исход.',
    len = str.length,
    i = 0;
    setInterval(function () {
      data.innerHTML += str[i++];
      if (i == len) data.innerHTML = '', i = 0;
    }, 50);
}());
</script>

</body>

рони 03.08.2016 08:09

folkemon,
потому что даже если исправить ошибки, алгоритм скрипта предназначен для испытания браузера на выносливость, сотни таймеров одновременно!!!

folkemon 03.08.2016 09:53

рони,
Пожалуйста помогите, я так понимаю что множество таймеров появляется из за условий того что скроллинг выполняется при условии >400px и < 800px, а если поставить условие =400px и =800px ?

рони 03.08.2016 10:32

включение/выключение печатной машинки при скролинге
 
folkemon,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
    body {
      height: 2500px;
    }
    #data{
      position: fixed;
    }
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
     var timer, pause = true, str = 'Основной сложностью в работе с закупками является является поиск тендеров, которые проводятся заказчиками и касаются товаров, работ у услуг поставляемых исполнителем. Поиск торгов – ответственный и сложный этап организации участия в тендере и от того, насколько качественно и профессионально он организован, во многом зависит его благоприятный исход.',
    len = str.length,
    i = 0;
  $(window).scroll(function(){
  var scroll = $(this).scrollTop();

  if (scroll > 400 && scroll < 800) {
  if(pause) {
  pause = false;
  timer = window.setTimeout(firstScript, 300)}
  }
  else {
  pause = true;
  data.textContent = '', i = 0;
  window.clearTimeout(timer)
  }
  })
  function firstScript() {
      data.textContent += str[i++];
      if (i == len) data.textContent = '', i = 0;
      timer = window.setTimeout(firstScript, 50);
    }

});
  </script>
</head>

<body>
<div id="data"></div>

</body>
</html>

folkemon 03.08.2016 11:22

рони,
Спасибо большое
Только есть одно, но как можно сделать что бы не циклически печатался а только по запуску скролла?

рони 03.08.2016 11:28

folkemon,
function firstScript() {
      data.textContent += str[i++];
      if (i < len) timer = window.setTimeout(firstScript, 50);
    }

folkemon 03.08.2016 14:26

рони,
Спасибо, то что надо


Часовой пояс GMT +3, время: 23:29.