За последние 24 часа нас посетили 16733 программиста и 1597 роботов. Сейчас ищут 1314 программистов ...

Как рабортает это?

Тема в разделе "JavaScript и AJAX", создана пользователем Dron-Boy, 16 ноя 2017.

  1. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    вобщем на этом форуме когда листаешь тему то сверху при прокрутке показывается номер ответа как это работает? может логику подкините или пример кода
    скрин то о чем я говорю
    http://joxi.ru/L21G9Yvt6xQ7qr
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    @Dron-Boy это номер страницы, а не ответа
     
  3. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    вобщето нет, это как раз номер ответа
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Ух ты, надо же!
     
  5. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    вот номер страници
    http://joxi.ru/4AklyxvHMnaJVr
     
  6. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Тут используется данный скрипт для этого.
    Каждый пост - элемент списка.
    Можно собрать их вместе:
    Код (Javascript):
    1. var posts = document.querySelectorAll('ol.messageList > li');
    Далее номер нужного элемента можно узнать перебрав их все и запомнив номер первого элемента, у которого свойство
    Код (Javascript):
    1. posts[i].offsetTop
    будет больше document.body.scrollTop. Это в обработчике прокрутки страницы
    Код (Javascript):
    1. window.onscroll = function()
    2. {
    3.     ...
    4. }
     
    #6 Maputo, 16 ноя 2017
    Последнее редактирование: 16 ноя 2017
    Dron-Boy нравится это.
  7. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    ну вот я прокручиваю блок и как я могу получить номер элемента на котором остановился?
    типо при прокрутке когда элемент списка уходит за пределы окна мы берем следующий эелемент и отслеживаем его. Вроде понял буду пробовать делать.
     
  8. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Откройте консоль браузера и вставьте туда следующий код
    Код (Javascript):
    1. var posts = document.querySelectorAll('ol.messageList > li');window.onscroll = function(){console.log('1-е сообщение: ' + posts[0].offsetTop + ' - страница: ' + document.body.scrollTop);}
    При прокрутке проследите какие значения будут у прокрутки страницы при появлении в окне верхней границы первого сообщения в этом посте.
     
    Dron-Boy нравится это.
  9. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Dron-Boy и Maputo нравится это.
  10. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Ок. А еще вопрос вот у меня получается на сайте страницы грузит без перезагрузки и по этому приходится писать события через on и вот пишу я так вот
    Код (Javascript):
    1. $("body").on("scroll",".overRev", function (event) {
    2.                     alert('1312123123')
    3.                 })
    но неечего не происходит. получается событие не срабатывает.
     
  11. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Код (Javascript):
    1. .on( "scroll", handler )
    А у Вас handler идет третьим параметром.
     
  12. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    нет, а для чего он? я про него не знаю.
     
  13. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Handler - это функция-обработчик события. И у Вас она в списке параметров идет третьей, а должна быть второй.
     
  14. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Код (Javascript):
    1. $(".overRev").on("scroll", function (event) {
    2.                     alert('1312123123')
    3.                 })
    Вы так имеете ввиду, но он не работает
     
  15. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Зависит от того в какой момент Вы пытаетесь прицепить обработчик. Это надо делать всегда внутри вот этой конструкции:
    Код (Javascript):
    1. window.onload = function()
    2. {
    3.   $(document).on("scroll", function (event) {
    4.                     console.log('1312123123');
    5.               })
    6. }
    Или подобной.
    А так же стоит посмотреть консоль браузера - там могут быть подсказки в виде ошибок.
     
  16. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    консоль пустая, запускаю в document.ready
    еще раз повторюсь что страници прогружаются без перезагрузки. попробовал так вот
    Код (Javascript):
    1. $("body").on("click",".overRev", function () {
    2.                     alert('1312123123')
    3.                 })
    событие отработало нормально
     
  17. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    @Dron-Boy, так пробовали:
    Код (Javascript):
    1. $(document).on("scroll", function (event) {
    2.                     console.log('1312123123');
    3.               })
    ?
     
    Dron-Boy нравится это.
  18. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    да так работает.
     
  19. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    А как нужно?
     
  20. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Тут событие срабатывает при прокрутке самого body он же появляется при загрузке страници и на него вешается это событие а вот у меня есть блок .overRev с scroll:auto который загружается динамически и на него почему то именно событие scroll не вешается (click пробовал сработало)
     
  21. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    @Dron-Boy, Вы прокручиваете содержимое этого блока?
     
  22. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Код (Javascript):
    1. $(document).on("scroll", function (event) {
    2.                     console.log('1312123123');
    3.               })
    так прокручиваю body и работает
    Код (Javascript):
    1.                 $('.back').on("scroll",".overRev",function (event) {
    2.                     console.log('1312123123');
    3.                 })
    так вешаю событие на блок с отзывами и прокручиваю его но собыьтие не срабатывает
     
  23. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    @Dron-Boy, html этих блоков в студию. Неужели Вы сами не видите разницы?
     
  24. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    ладно все, спасибо. Сказали не делать.
     
  25. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    ты по ссылке внимательно почитай.
    Скролишь документ и отслеживаешь координаты элементов относительно окна.
    В нашем деле без изобретательности никуда.