|
0 / 0 / 0
Регистрация: 23.03.2017
Сообщений: 5
|
|
Перезапись переменной в setInterval23.03.2017, 15:39. Показов 3814. Ответов 8
Метки нет (Все метки)
Добрый день!
Только-только начал изучать js. Поэтому, Уважаемые форумяне, просьба не бросаться помидорами, а просьба помочь... Перед мной задача пушить показы баннеров из исходного html кода, записывая в переменную значение аттрибута name активного баннера. Активный баннер имеет class="flex-active-slide", интервал между сменой баннеров 5 секунд Исходный код имеет вид <ul class="slides"> <li class="flex-active-slide"> <a name="1"> <li> <a name="2"> <li> <a name="3"> </ul> Для этой задачи использую setInterval в виде <script> var timerId = setInterval(function() { var a = $('.flex-active-slide a').attr('name').length if (a > 0){ clearTimeout(timerId); console.log( $('.flex-active-slide a').attr('name') ); } }, 1000); </script> Но в этом случае setInterval отрабатывает только один раз и все... Если убираю clearTimeout, то пушится 5 раз один и тот же баннер за время отработки setInterval (время то смены баннеров 5 сек). Изменять время setInterval не вариант поскольку возможна ручная прокрутка баннеров. Помогите ПЖ со скриптом!
0
|
|
| 23.03.2017, 15:39 | |
|
Ответы с готовыми решениями:
8
Перезапись переменной
|
|
Фрилансер
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
|
|||
| 23.03.2017, 16:02 | |||
|
Для setInterval есть clearInterval Добавлено через 5 минут
0
|
|||
|
0 / 0 / 0
Регистрация: 23.03.2017
Сообщений: 5
|
|
| 23.03.2017, 16:13 [ТС] | |
|
Проблема в том, что я скрипт отдает за время работы setInterval 5 раз одно и тоже значение прежде чем произошла смена баннера, а должен только один раз отдать значение для каждого баннера
Убрал, к примеру, setTimeout. В html 3-и тега a. Смена активного тега а на другой происходит через 5 секунд. За это время setInterval логирует 5 раз тег а1, потом 5 раз а2 и т.д. Мне нужно чтобы он логировал только по одному разу. При этом изменить время отрaботки setInterval не могу поскольку есть возможность ручного пролистывания <script> var timerId = setInterval(function() { console.log( $('.flex-active-slide a').attr('name') ); } }, 1000); </script>
0
|
|
|
Superposition
950 / 615 / 256
Регистрация: 27.10.2013
Сообщений: 2,083
|
||
| 24.03.2017, 02:57 | ||
|
"нажали на картинку левой кнопкой мыши -> предыдущая картинка исчезла, на ее месте появилась следующая" в таком духе.
0
|
||
|
0 / 0 / 0
Регистрация: 23.03.2017
Сообщений: 5
|
|
| 24.03.2017, 11:14 [ТС] | |
|
Господа, я не прошу сделать поставленную за меня задачу... Я старался максимально подробно описать задачу...
Просьба просто подсказать, намекнуть... Может я вообще не правильно подошел к задаче, может setInterval это не лучший способ решения... Но поскольку опыта нет, то я счел setInterval оптимальным вариантом для пуша показов баннеров в слайдере. Но сделать чтобы на пуш активного баннера не не имел влияния интервал генерации setInterval не могу... Теоретически, думаю нужно заводить if else с проверкой условий и перезаписью переменных, типа вот этого var timerId = setInterval(function() { var a = $('.flex-active-slide a').attr('name') var b if (a == b) {console.log( 'повтор setInterval' );} else if (a != b && b == 'undefined' ) {console.log( a ); b = a;} else if (a != b && b != 'underfined') {console.log( a ); b = a;} }, 1000); Но почему-то все равно активный баннер выводится в консоль 5 раз вместо 1-го раза ![]() Что я делаю не так?
0
|
|
|
the hardway first
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
|
||||||
| 24.03.2017, 12:32 | ||||||
|
uvexx, вам надо хранить состояние и в зависимости от него выполнять некие действия. Например, сохранить значение последнего слайда. И с интервалом проверять его на соответсвие показываемому. Если совпадает, то ничего не делать, иначе "пушить показы баннеров" (что бы это ни значило).
Навскидку:
1
|
||||||
|
Superposition
950 / 615 / 256
Регистрация: 27.10.2013
Сообщений: 2,083
|
|
| 24.03.2017, 13:05 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 23.03.2017
Сообщений: 5
|
|||
| 24.03.2017, 13:18 [ТС] | |||
|
Добавлено через 1 минуту Работает!!!
0
|
|||
|
0 / 0 / 0
Регистрация: 23.03.2017
Сообщений: 5
|
|
| 09.11.2017, 10:28 [ТС] | |
|
Господа добрый день!
Ранее вы помогли с реализацией функции setInterfal. var currentSlide; setInterval(function () { var newSlide = $('.flex-active-slide a').prop('name'); if (currentSlide == newSlide) return; currentSlide = newSlide; console.log(currentSlide); }, 1000); Помогите ПЖ еще раз с ней же... Прошлая задача усложнилась тем, что в новом ul слайдера в тегах li нет класса вообще, но есть аттрибут aria-hidden со значение true - это пассивный баннер и false - это активный баннер пытаюсь запустить прошлый скрипт с циклом for, но в консоле молчание ![]() есть подозрение, что цикл for не работает в setInterval, но как тогда записать этот обработчик? Вот как я пытаюсь это сделать: var currentSlide; setInterval(function () { var ul = $('ul.bxslider li') // все составляющие слайдера for ( q = 0; q < ul.length; q++) { // начинаем переборку li и ищем аттрибут со значение false if ($(ul[q]).attr('aria-hidden') == 'false') // если равенство, то записываем значение alt тега img в переменную newSlide var newSlide = $(ul[q].firstChild.firstChild).attr('alt'); //структура такая <ul><li>-><a>-><img><li>... поэтому использую 2-а раза firstChild var newSlide = $('.flex-active-slide a').prop('name'); if (currentSlide == newSlide) return; currentSlide = newSlide; console.log(currentSlide); } }, 1000);
0
|
|
| 09.11.2017, 10:28 | |
|
Помогаю со студенческими работами здесь
9
Перезапись переменной в $_GET Перезапись статичной переменной родителя setInterval Оптимизация setInterval() setInterval не работает Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|