За последние 24 часа нас посетили 22360 программистов и 1019 роботов. Сейчас ищут 664 программиста ...

Навигация для слайдшоу с плавным переходом изображений

Тема в разделе "JavaScript и AJAX", создана пользователем olga_0630, 11 сен 2018.

  1. olga_0630

    olga_0630 Новичок

    С нами с:
    16 фев 2018
    Сообщения:
    47
    Симпатии:
    0
    Доброе время суток, имеется скрипт, который позволяет поочередную смену изображений, где не получается корректно реализовать для ссылки "Предыдущая", чтобы по клику на эту ссылку можно было посмотреть предыдущее изображение.

    HTML разметка:
    HTML:
    1. <div>
    2.     <div>
    3.         <img src="img/1.jpg" id="slide_show" />
    4.         <img src="img/2.jpg" id="slide_show2" style="display:none;" />
    5.     </div>
    6.    
    7.     <div class="txt_slides">
    8.         <p id="slide_text">Lorem Ipsum is simply dummy text...</p>
    9.         <p id="slide_text2" style="display:none;">Lorem Ipsum is simply dummy text2...</p>
    10.    
    11.     <br/><br/>
    12.        
    13.         <a onclick="clearInterval(go);go=setInterval('chgImg(0)',3000);">Старт</a>
    14.         <a onclick="clearInterval(go);" title="Остановить">Стоп</a>    -->
    15.         <a onclick="chgImg(0)" title="Вперёд">Следующая</a>
    16.     </div>
    17. </div>
    JS код:
    Код (Javascript):
    1. <script type="text/javascript">
    2. var imgs = ['img/1.jpg','img/2.jpg'];
    3. var text = ['Lorem Ipsum is simply dummy text...','Lorem Ipsum is simply dummy text...2'];
    4. var n=0;
    5. var next="";
    6. $(document).ready(function(){go=setInterval("chgImg(0)", 3000);});
    7.  
    8. function chgImg(number) {
    9. if (number!=0) {
    10.      clearInterval(go);
    11.      $('[id^=slide_show], [id^=slide_text]').stop();
    12.      n=number-2;
    13.      go=setInterval("chgImg(0)", 3000);
    14. }
    15. n++;
    16. if (n>=imgs.length) n=0;
    17. if (next=="") next=2;
    18. else next="";
    19.  
    20. $('#slide_show'+next).attr('src',imgs[n]);
    21. $('#slide_text'+next).html(text[n]);
    22. $('[id^=slide_show], [id^=slide_text]').fadeToggle(2000);
    23. }
    24. </script>
    В данный момент ссылки "Старт", "Стоп", "Следущая" работают правильно и если я, например, хочу сделать ссылку на 3 или 10 изображение, то добавляю в html:

    HTML:
    1. <a onclick="chgImg(3)" title="3 фото">Третье изображение</a>
    2. <a onclick="chgImg(10)" title="10 фото">Десятое изображение</a>
    работает прекрасно, но вот с добавлением ссылки для "Предыдущая" и небольшого изменения js скрипта, работает, но как-то коряво...

    Может пробовать так :
    <a onclick="chgImg(-1)" title="Назад">Предыдущая</a>

    но тогда и для ссылки "Следующая" придётся скрипт изменять, чтобы скрипт работал правильно.

    Буду благодарна за помощь, Ольга
     
  2. Artur_hopf

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

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
  3. Artur_hopf

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

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    кстати картинки и текст можно передавать таким образом:
    HTML:
    1.  
    2. <div id="block" data=0></div>
    3. <a onclick="chgImg('start');">Старт</a>
    4. <a onclick="chgImg('stop')" title="Остановить">Стоп</a>
    5. <a onclick="chgImg('next')" title="Вперёд">Следующая</a>
    6. <a onclick="chgImg('back')" title="Вперёд">Предыдущая</a>
    7.  
    Код (Javascript):
    1. window.onload = chgImg;
    2. function chgImg(click) {
    3.     if(click == 'stop' //start, next,back ..){
    4.         //делаем что нужно...
    5.     }
    6.     var n = $('#block').attr('data'); //номер картинки теперь хранится в div
    7.  
    8.     var imgs = ['img/1.jpg','img/2.jpg'];
    9.     var text = ['Lorem Ipsum is simply dummy text...','Lorem Ipsum is simply dummy text...2'];
    10.     html = '';
    11.     html = '<img src="'+imgs[n]+'"/><br><p>'+text[n]+'</p>'; //вставляем нужную картинку и надпись
    12.     $('#block').html(html);
    13.     n++;
    14.     if (n >= imgs.length){
    15.         n=0;
    16.     };
    17.     $('#block').attr('data', n); //сохраняем номер в блок
    18.  
    19.     console.log($('#block').attr('data'))
    20.     chgImg.id = setTimeout(function() {
    21.         chgImg();
    22.     }, 3000);
    23. }
    В общем отлавливая номер можно и присваивать n++ или n-1, дописывать код кнопок лень, думаю разберешься.