Javascript.RU

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

Обратный отсчет от заданного числа с задержкой
Здравствуйте, необходимо, чтобы при прокрутке человеком к нужной части сайта, кол-во товаров уменьшалось, причем сначала на 2, затем через 3 секунды еще на 3, я использовал такой код
$(function() {
    var jqBar = $('#bar-1');
    var jqBarStatus = true;
    $(window).scroll(function() {
        var scrollEvent = ($(window).scrollTop() > (jqBar.position().top - $(window).height()));
        if (scrollEvent && jqBarStatus) { 
            jqBarStatus = false;
      var currentNumber = $('#dynamic-number').text();

$({numberValue: currentNumber}).animate({numberValue: 60}, {
    duration: 8000,
    easing: 'linear',
    step: function() { 
        $('#dynamic-number').text(Math.ceil(this.numberValue)); 
    }
});
           
        }}
    });
})
как сделать, чтобы после того как отсчет дойдет до 60, через 3 секунды продолжился до 57 например?
Ответить с цитированием
  #2 (permalink)  
Старый 11.11.2017, 00:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

frost68,
$({numberValue: currentNumber}).animate({numberValue: 60}, {
    duration: 8000,
    easing: 'linear',
    step: function() {
        $('#dynamic-number').text(Math.ceil(this.numberValue));
    }
}).delay(3000).animate({numberValue: 57}, {
    duration: 8000,
    easing: 'linear',
    step: function() {
        $('#dynamic-number').text(Math.ceil(this.numberValue));
    }
});
Ответить с цитированием
  #3 (permalink)  
Старый 11.11.2017, 14:53
Аспирант
Отправить личное сообщение для frost68 Посмотреть профиль Найти все сообщения от frost68
 
Регистрация: 10.11.2017
Сообщений: 33

Сообщение от рони Посмотреть сообщение
frost68,
$({numberValue: currentNumber}).animate({numberValue: 60}, {
    duration: 8000,
    easing: 'linear',
    step: function() {
        $('#dynamic-number').text(Math.ceil(this.numberValue));
    }
}).delay(3000).animate({numberValue: 57}, {
    duration: 8000,
    easing: 'linear',
    step: function() {
        $('#dynamic-number').text(Math.ceil(this.numberValue));
    }
});
Огромное спасибо, работает!
Ответить с цитированием
  #4 (permalink)  
Старый 11.11.2017, 18:44
Аспирант
Отправить личное сообщение для frost68 Посмотреть профиль Найти все сообщения от frost68
 
Регистрация: 10.11.2017
Сообщений: 33

Сообщение от рони Посмотреть сообщение
frost68,
$({numberValue: currentNumber}).animate({numberValue: 60}, {
    duration: 8000,
    easing: 'linear',
    step: function() {
        $('#dynamic-number').text(Math.ceil(this.numberValue));
    }
}).delay(3000).animate({numberValue: 57}, {
    duration: 8000,
    easing: 'linear',
    step: function() {
        $('#dynamic-number').text(Math.ceil(this.numberValue));
    }
});
Как сделать выполнения этого скрипта еще раз, в другом месте, я сделал так
$(function () {
    var jqBar = $('#bar-2'); // селектор для вашего блока
    var jqBarStatus = true;
    $(window).scroll(function() {
        var scrollEvent = ($(window).scrollTop() > (jqBar.position().top - $(window).height()));
        if (scrollEvent && jqBarStatus) { 
            jqBarStatus = false;
            /* выполнение скрипта jqbar с определенными параметрами */
      var currentNumber = $('#dynamic-number2').text();

$({numberValue: currentNumber}).animate({numberValue: 60}, {
    duration: 100,
    easing: 'linear',
    step: function() { 
        $('#dynamic-number2').text(Math.ceil(this.numberValue)); 
    }
});
           
        }
    });
});
но там с цифры 63 моментально становиться цифра 61 и ничего не происходит
Ответить с цитированием
  #5 (permalink)  
Старый 11.11.2017, 19:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от frost68
моментально
Сообщение от frost68
duration: 100,
???
Ответить с цитированием
  #6 (permalink)  
Старый 14.11.2017, 01:08
Аспирант
Отправить личное сообщение для frost68 Посмотреть профиль Найти все сообщения от frost68
 
Регистрация: 10.11.2017
Сообщений: 33

затупил, поправил, но второй скрипт начинает срабатывать сразу после загрузки страницы, а не при пролистывании к этому элементу
Ответить с цитированием
  #7 (permalink)  
Старый 14.11.2017, 03:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

frost68,
анимация чисел в зоне видимости jquery
Ответить с цитированием
  #8 (permalink)  
Старый 22.11.2017, 17:52
Аспирант
Отправить личное сообщение для frost68 Посмотреть профиль Найти все сообщения от frost68
 
Регистрация: 10.11.2017
Сообщений: 33

Сообщение от рони Посмотреть сообщение
???
Мой код тоже вроде заработал, а как сделать, чтобы при обновлении страницы одним и тем же человеком показывались уже конечный цифры без обратного отсчета? Т.е. чтобы отсчет каждый раз не сбрасывался
Ответить с цитированием
  #9 (permalink)  
Старый 22.11.2017, 18:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от frost68
Т.е. чтобы отсчет каждый раз не сбрасывался
читать про localStorage, смотреть примеры с localStorage
Ответить с цитированием
  #10 (permalink)  
Старый 28.11.2017, 16:22
Аспирант
Отправить личное сообщение для frost68 Посмотреть профиль Найти все сообщения от frost68
 
Регистрация: 10.11.2017
Сообщений: 33

В чем здесь ошибка? Суть в том, что если человек увидел обратный отсчет, то при перезагрузке страницы он видел только результат выполнения обратного отсчета, а если local storage пуст, то выполнялся обратный отсчет.
<div class="attention">По акции доступно <span id="dynamic-number3">63</span>!</div>
<script>
document.getElementById('dynamic-number3').onload = function() {
  if(document.getElementById('dynamic-number3')=== null) {
    localStorage.setItem('dynamic-number3', "57");
  } else {
    localStorage.setItem('dynamic-number3', "63");
  }
}
if (localStorage.getItem('dynamic-number3') == "63") {
   
            jqBarStatus = false;
            /* выполнение скрипта jqbar с определенными параметрами */
      var currentNumber = $('#dynamic-number3').text();

$({numberValue: currentNumber}).animate({numberValue: 60}, {
    duration: 5000,
    easing: 'linear',
    step: function() { 
        $('#dynamic-number2').text(Math.ceil(this.numberValue)); 
    }

})
</script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простые числа, не превосходящие заданного числа. jutochka123 Общие вопросы Javascript 2 30.09.2017 13:05
Обратный отсчет Sav2907 Элементы интерфейса 13 22.03.2017 01:24
Обратный отсчет до даты с учетом часовых зон royksopp Flash 0 25.09.2013 18:25
jQuery Timer - обратный отсчет времени в 10 минут adax jQuery 1 01.11.2011 14:54
Многократный обратный отсчет sultan.khayrulin Общие вопросы Javascript 1 30.05.2010 22:41