Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.08.2016, 10:06
Интересующийся
Отправить личное сообщение для seotapki Посмотреть профиль Найти все сообщения от seotapki
 
Регистрация: 27.08.2016
Сообщений: 28

Повторное получение данных JS-скриптом при смене слайда
Приветствую!
Нужна ваша помощь.

На сайте проблема со сменой слайдов и эффектом набора текста typed.js

- Слайдер использую http://www.owlcarousel.owlgraphic.co...d-welcome.html
- Эффект набора текста http://www.mattboldt.com/demos/typed-js/
Вот код:
<script>
            jQuery(document).ready(function($) {
              var owl = $('.owl-carousel');
              owl.on(
                'to.owl.carousel changed.owl.carousel', function(e) {
                    
                      $(".top_text").typed({
                        stringsElement: $('#string1'),
                        typeSpeed: 0,
                        showCursor: false,
                        });
                
                        $(".bottom_text").typed({
                        stringsElement: $('#string2'),
                        typeSpeed: 0,
                        showCursor: false,
                        });
                
                });
              owl.owlCarousel({
                loop: true,
                nav: false,
                autoplay: true,
                autoplayTimeout: 5000,
                autoplayHoverPause: true,
                items:1,
              });
            });
          </script>


Теперь о проблеме: Есть две строки(#string1, #string2), где при каждой смене слайда меняются значения обоих строк.

Пункт1. Дожжно быть так:

1 Слайд (#string1= значение 1, #string2=значение1)
2 Слайд (#string1= значение 2, #string2=значение2)
3 Слайд (#string1= значение 3, #string2=значение3)
слайдер зацикленный и при повторе должно все повторяться.

Пункт2. А получается так:

1 Слайд (#string1= значение 1, #string2=значение1)
2 Слайд (#string1= значение 2, #string2=значение2)
3 Слайд (#string1= значение 2, #string2=значение2)

Пункт3. при повторном выполнении слайдера, получается так:

1 Слайд (#string1= значение 2, #string2=значение2)
2 Слайд (#string1= значение 2, #string2=значение2)
3 Слайд (#string1= значение 2, #string2=значение2)

Если обновить страницу, получается пункт 2

Как сделать так, чтобы при каждой смене слайда JS получал новое значение строк (#string1, #string2).

Если не использовать typed.js и сразу выводить значения строк в слайдере, то проблем нет.

Последний раз редактировалось seotapki, 27.08.2016 в 10:27. Причина: неправильный заголовок
Ответить с цитированием
  #2 (permalink)  
Старый 27.08.2016, 12:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

seotapki,
у вас в каждом слайде одинаковые id?
Ответить с цитированием
  #3 (permalink)  
Старый 27.08.2016, 13:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

owlCarousel and typed
seotapki,
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
      <script type="text/javascript" src="https://owlcarousel2.github.io/OwlCarousel2/assets/vendors/jquery.min.js"></script>
      <script type="text/javascript" src="https://owlcarousel2.github.io/OwlCarousel2/assets/owlcarousel/owl.carousel.js"></script>
      <link rel="stylesheet" type="text/css" href="https://owlcarousel2.github.io/OwlCarousel2/assets/owlcarousel/assets/owl.carousel.min.css">
      <link rel="stylesheet" type="text/css" href="https://owlcarousel2.github.io/OwlCarousel2/assets/css/docs.theme.min.css">
      <link rel="stylesheet" type="text/css" href="http://www.owlcarousel.owlgraphic.com/assets/owlcarousel/assets/owl.theme.default.min.css">
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/typed.js/1.1.4/typed.min.js"></script>
  <style type="text/css">
    .owl-carousel .item {
    height: 10rem;
    background: #4DC7A0;
    padding: 1rem;
    position:relative;
}
.owl-carousel .owl-prev{
   position:absolute;
   top:0; left:0;
   display:block;
   height:99%;
   width:90px;
   background:red;
}
.owl-carousel .owl-next{
   position:absolute;
   top:0; right:0;
   display:block;
   height:99%;
   width:90px;
   background:red;
}
.owl-prev,.owl-next{
  opacity:0;
}

.prev:after, .next:after{
  content: attr(class);
}

.prev,.next{
  display: inline-block;
}
.typed-cursor{
    opacity: 1;
    -webkit-animation: blink 0.7s infinite;
    -moz-animation: blink 0.7s infinite;
    animation: blink 0.7s infinite;
}
@keyframes blink{
    0% { opacity:1; }
    50% { opacity:0; }
    100% { opacity:1; }
}
@-webkit-keyframes blink{
    0% { opacity:1; }
    50% { opacity:0; }
    100% { opacity:1; }
}
@-moz-keyframes blink{
    0% { opacity:1; }
    50% { opacity:0; }
    100% { opacity:1; }
}
.string1,.string2{
  display: none;
}

  </style>

  <title>Owl Carousel 2.1.0 Responsive by Geyan</title>
<script>
$(function() {
var owl = $('.owl-carousel').owlCarousel({
   loop: true,
                nav: false,
                autoplay: true,
                autoplayTimeout: 5000,
                autoplayHoverPause: true,
                items:1,
                mouseDrag:false


});

owl.on('change.owl.carousel', function(e) {

                      $(".top_text").typed({
                        strings: [$('.string1').eq(e.page.index).text()],
                        typeSpeed: 0,
                        showCursor: false,
                        });

                        $(".bottom_text").typed({
                         strings: [$('.string2').eq(e.page.index).text()],
                        typeSpeed: 0,
                        showCursor: false,
                        });

                });


})

</script>


</head>

<body>  <div class="top_text">111 up</div>
  <div class="owl-carousel">
    <div class="item"> <div class="string1">111 up</div><div class="string2">111 dn</div>
        <h4>1</h4>
    </div>
    <div class="item"> <div class="string1">222 up</div><div class="string2">222 dn</div>
        <h4>2</h4>
    </div>
    <div class="item"> <div class="string1">333 up</div><div class="string2">333 dn</div>
        <h4>3</h4>
    </div>

</div>
     <div class="bottom_text">111 dn</div>
</body>

</html>
Ответить с цитированием
  #4 (permalink)  
Старый 27.08.2016, 14:22
Интересующийся
Отправить личное сообщение для seotapki Посмотреть профиль Найти все сообщения от seotapki
 
Регистрация: 27.08.2016
Сообщений: 28

Сообщение от рони Посмотреть сообщение
seotapki,
у вас в каждом слайде одинаковые id?
Id контейнера в каждом слайдере одинаковые, но при смене слайда там динамически меняется текст
<div id="string1" style="display: none;"><p>[[+slidername]]</p></div>
        	 <div id="string2" style="display: none;"><p>[[+sliderdescription]]</p></div>


Изменил слайдер на другой, вот код:
<script>
$(document).ready(function(){
  $('.slider').bxSlider({
   mode: 'horizontal',
   controls: true,
   infiniteLoop: true,
   pager: false,
   auto: true,
   autoStart: true,
   
  onSliderLoad: function(){
    $(".top_text").typed({
                        stringsElement: $('#string1'),
                        typeSpeed: 0,
                        showCursor: false,
                        });
                
                        $(".bottom_text").typed({
                        stringsElement: $('#string2'),
                        typeSpeed: 0,
                        showCursor: false,
                        });
    },
  onSlideAfter: function(){
    $(".top_text").typed({
                        stringsElement: $('#string1'),
                        typeSpeed: 0,
                        showCursor: false,
                        });
                
                        $(".bottom_text").typed({
                        stringsElement: $('#string2'),
                        typeSpeed: 0,
                        showCursor: false,
                        });
   }
});
});
</script>


Тема по прежнему актуальна
Ответить с цитированием
  #5 (permalink)  
Старый 27.08.2016, 14:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Сообщение от seotapki
Тема по прежнему актуальна
чем код выше не подошёл?
Ответить с цитированием
  #6 (permalink)  
Старый 27.08.2016, 15:07
Интересующийся
Отправить личное сообщение для seotapki Посмотреть профиль Найти все сообщения от seotapki
 
Регистрация: 27.08.2016
Сообщений: 28

Сообщение от рони Посмотреть сообщение
чем код выше не подошёл?
Код выше почему-то у меня не сработал, переделал под bxslider

исходный код можете глянуть?
http://andrei-reklama.webfox.pro/

теперь еще почему-то typed.js зациклился и игнорирует свои настройки
Ответить с цитированием
  #7 (permalink)  
Старый 27.08.2016, 15:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Сообщение от seotapki
теперь еще почему-то typed.js зациклился и игнорирует свои настройки
...откуда скрипту знать какой именно string1 или string2, если не указано, берётся первый.
$(document).ready(function(){
  $('.slider').bxSlider({
   mode: 'horizontal',
   controls: true,
   infiniteLoop: true,
   pager: false,
   auto: true,
   autoStart: true,
   pause: 5000,

  onSliderLoad: function(el){
                        $(".top_text").typed({
                            stringsElement: $('.string1',el),
                            typeSpeed: 0,
                            showCursor: false,
                            loop: false,
                            loopCount: 0,
                            backDelay: 5000, // пауза перед удалением текста

                        });

                        $(".bottom_text").typed({
                            stringsElement: $('.string2',el),
                            typeSpeed: 0,
                            showCursor: false,
                            loop: false,
                            loopCount: 0,
                            backDelay: 5000, // пауза перед удалением текста
                        });
  },
  onSlideAfter: function(el){
                        $(".top_text").typed({
                            stringsElement: $('.string1',el),
                            typeSpeed: 0,
                            showCursor: false,
                            loop: false,
                            loopCount: 0,
                            backDelay: 5000, // пауза перед удалением текста
                        });

                        $(".bottom_text").typed({
                            stringsElement: $('.string2',el),
                            typeSpeed: 0,
                            showCursor: false,
                            loop: false,
                            loopCount: 0,
                            backDelay: 5000, // пауза перед удалением текста
                        });
   }
});
});
Ответить с цитированием
  #8 (permalink)  
Старый 27.08.2016, 15:38
Интересующийся
Отправить личное сообщение для seotapki Посмотреть профиль Найти все сообщения от seotapki
 
Регистрация: 27.08.2016
Сообщений: 28

Сообщение от рони Посмотреть сообщение
...откуда скрипту знать какой именно string1 или string2, если не указано, берётся первый.
$(document).ready(function(){
  $('.slider').bxSlider({
   mode: 'horizontal',
   controls: true,
   infiniteLoop: true,
   pager: false,
   auto: true,
   autoStart: true,
   pause: 5000,

  onSliderLoad: function(el){
                        $(".top_text").typed({
                            stringsElement: $('.string1',el),
                            typeSpeed: 0,
                            showCursor: false,
                            loop: false,
                            loopCount: 0,
                            backDelay: 5000, // пауза перед удалением текста

                        });

                        $(".bottom_text").typed({
                            stringsElement: $('.string2',el),
                            typeSpeed: 0,
                            showCursor: false,
                            loop: false,
                            loopCount: 0,
                            backDelay: 5000, // пауза перед удалением текста
                        });
  },
  onSlideAfter: function(el){
                        $(".top_text").typed({
                            stringsElement: $('.string1',el),
                            typeSpeed: 0,
                            showCursor: false,
                            loop: false,
                            loopCount: 0,
                            backDelay: 5000, // пауза перед удалением текста
                        });

                        $(".bottom_text").typed({
                            stringsElement: $('.string2',el),
                            typeSpeed: 0,
                            showCursor: false,
                            loop: false,
                            loopCount: 0,
                            backDelay: 5000, // пауза перед удалением текста
                        });
   }
});
});
Частично помогло, логически стало правильно (ниже код правильного варианта):

<div class="big_photo"> <img src="assets/images/sliders/slide3.jpg" >
             <div class="slider_inner">
                <a class="top_text" href="/shirokoformatnaja-pechat" ></a>
                <a class="bottom_text" href="/shirokoformatnaja-pechat" ></a>
        	 </div>
        	 <div class="string1"><p>Рекламные вывески</p></div><div class="string2"><p>Проектирование,  изготовление, монтаж,  обслуживание...</p></div>

        	 
</div><div class="big_photo"> <img src="assets/images/sliders/slide4.jpg" >
             <div class="slider_inner">
                <a class="top_text" href="/uslugi/oformlenie-vitrin-i-torgovyix-zalov.html" ></a>
                <a class="bottom_text" href="/uslugi/oformlenie-vitrin-i-torgovyix-zalov.html" ></a>
        	 </div>
        	 <div class="string1"><p>Крышные конструкции</p></div><div class="string2"><p>Проектирование,  изготовление, монтаж,  обслуживание...</p></div>

        	 
</div><div class="big_photo"> <img src="assets/images/sliders/slide1.jpg" >
             <div class="slider_inner">
                <a class="top_text" href="" ></a>
                <a class="bottom_text" href="" ></a>
        	 </div>
        	 <div class="string1"><p>Оформление витрин и торговых залов</p></div><div class="string2"><p>Оформление гипермаркета строительных материалов, еще текст и описание...</p></div>

        	 
</div>

  </section>


Но при первой загрузке страницы, вот этому участку кода:
<div class="big_photo"> <img src="assets/images/sliders/slide3.jpg" >
             <div class="slider_inner">
                <a class="top_text" href="/shirokoformatnaja-pechat" ></a>
                <a class="bottom_text" href="/shirokoformatnaja-pechat" ></a>
        	 </div>


Присваиваются неправильные строки :

<div class="string1"><p>Оформление витрин и торговых залов</p></div><div class="string2"><p>Оформление гипермаркета строительных материалов, еще текст и описание...</p></div>


т.е Первому слайду(slide3.jpg) присваивается описание, третьего слайда(slide1.jpg)
<div class="string1"><p>Оформление витрин и торговых залов</p></div><div class="string2"><p>Оформление гипермаркета строительных материалов, еще текст и описание...</p></div>


как это можно исправить и почему так происходит?
Ответить с цитированием
  #9 (permalink)  
Старый 27.08.2016, 16:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

seotapki,
onSliderLoad: function(){
                        $(".top_text").typed({
                            stringsElement: $('.string1').eq(1),
                            typeSpeed: 0,
                            showCursor: false,
                            loop: false,
                            loopCount: 0,
                            backDelay: 5000, // пауза перед удалением текста

                        });

                        $(".bottom_text").typed({
                            stringsElement: $('.string2').eq(1),
                            typeSpeed: 0,
                            showCursor: false,
                            loop: false,
                            loopCount: 0,
                            backDelay: 5000, // пауза перед удалением текста
                        });
  },
Ответить с цитированием
  #10 (permalink)  
Старый 27.08.2016, 16:19
Интересующийся
Отправить личное сообщение для seotapki Посмотреть профиль Найти все сообщения от seotapki
 
Регистрация: 27.08.2016
Сообщений: 28

Сообщение от рони Посмотреть сообщение
seotapki,
onSliderLoad: function(){
                        $(".top_text").typed({
                            stringsElement: $('.string1').eq(1),
                            typeSpeed: 0,
                            showCursor: false,
                            loop: false,
                            loopCount: 0,
                            backDelay: 5000, // пауза перед удалением текста

                        });

                        $(".bottom_text").typed({
                            stringsElement: $('.string2').eq(1),
                            typeSpeed: 0,
                            showCursor: false,
                            loop: false,
                            loopCount: 0,
                            backDelay: 5000, // пауза перед удалением текста
                        });
  },
Спасибо большое, теперь все работает! Вопрос решен)))
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите сделать выполнение jquery при загрузке страницы acidjazzz jQuery 3 30.03.2015 14:27
При смене картинки в слайдере фокус возвращается к нему blackcky Общие вопросы Javascript 10 19.01.2015 17:19
Выполнение скрипта при нажатии Entet в текстовм поле Vlasssov Общие вопросы Javascript 4 23.08.2009 23:31
выполнение ф-ии при изменении состояния radio MaxB Events/DOM/Window 5 24.06.2009 14:24
Подскажите как при помощи JS hta в трею свернуть kimboo Общие вопросы Javascript 4 11.07.2008 16:00