Кнопка «Следующая / Предыдущая» в галерее изображений - PullRequest
1 голос
/ 22 февраля 2012

Прямо сейчас у меня есть галерея изображений, которая меняет изображения, когда пользователь, щелкающий по миниатюре изображения, изменяет стиль соответствующего div, чтобы заблокировать, а остальные скрыты.Я хочу иметь возможность добавлять следующие / предыдущие кнопки для дополнительной навигации.

Я думал, что нужно использовать getElementByAttribute, чтобы найти единственное изображение с 'style = "display: block"', а затем каким-то образом добавить / вычестьодин в див.Но я боюсь, что я в растерянности.Любой совет?

Текущий код:

<div id="image1" style="display:block"><img src="resources/images/larges/01.jpg"></div>
<div id="image2" style="display:none"><img src="resources/images/larges/02.jpg"></div>
. . .

<img style='cursor:pointer;' onclick="showDiv(1)" src="resources/images/thumbs/01.jpg">
<img style='cursor:pointer;' onclick="showDiv(2)" src="resources/images/thumbs/02.jpg">
. . .

<script type = "text/javascript">       
   function showDiv(which) {
    for(i = 0; i < 13; i++) {
       document.getElementById("image"+i).style.display="none";
    }
       document.getElementById("image" + which).style.display = "block";
    }   
</script>

Ответы [ 4 ]

2 голосов
/ 22 февраля 2012

Почему бы вам не использовать только один div для отображения большого?( Это с поддержкой jquery )

Идея состоит в том, чтобы изменить только одно изображение, которое вы хотите отобразить, а не просто скрыть другие.Вы можете сохранить фактический атрибут как для следующей кнопки (разрешено, если они начинаются с данных -)

<div style="display:block"><img  id="largeimg" data-nr="1" src="resources/images/larges/01.jpg"></div>
<img data-nr="1" class="clickable" style='cursor:pointer;' src="resources/images/thumbs/01.jpg">
<img data-nr="2" class="clickable" style='cursor:pointer;' src="resources/images/thumbs/02.jpg">
. . .

<script type = "text/javascript">       
  $(document).ready(function(){
    $(".clickable").each(function({
      this.click(function(){
         $("#largeimg").attr("src",this.attr("src")).attr("data-nr",this.attr("data-nr"));
      }
    }
  });
  function nextpic() {
    newid = parseInt($("#largeimg").attr("data-nr"))+1;
    newsrc = $(".clickable[data-nr="+newid+"]").attr("src");
    $("#largeimg").attr("src",newsrc).attr("data-nr",newid);
  }
</script>

РЕДАКТИРОВАТЬ: потому что он сказал, что это должно быть для видео тоже: http://jsfiddle.net/x6W8m/ неидеально, но должно показать немного:)

1 голос
/ 02 марта 2015
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Next and Previous Button</title>
    <link rel="stylesheet" href="">
</head>
<body>

<img src="images.jpg" id="imgDemo" alt="HTML5 Icon" width="128" height="128"> 

                <button onclick="nxt()" id="btnOne">next</button>
                <button onclick="prvs()" id="btnTwo">previous</button> 

<script>

var img = new Array("images.jpg","images1.jpg","images2.jpg","images3.jpg","images4.jpg","images5.jpg","images6.jpg","images7.jpg","images8.jpg");

var imgElement = document.getElementById("imgDemo");
var i = 0;
var imgLen = img.length;

        function nxt()
        {
            if(i < imgLen-1)
                {
                    i++;
                }
            else{
                    i=0;                
                }

                imgElement.src = img[i];                    
        }

        function prvs()
        {
            if(i > 0)
                {
                    i--;
                }
            else
            {
                i = imgLen-1;
            }
                imgElement.src = img[i];                    
        }

</script>

</body>
</html>
1 голос
/ 22 февраля 2012

вы можете объявить глобальную переменную

var currentImage = 1; //assuming the 1st image shown is always the first

затем добавьте две кнопки,

<button type="button" onclick="showDiv(currentImage - 1)">Previous</button>
<button type="button" onclick="showDiv(currentImage + 1)">Next</button>

в вашей функции вы обновляете currentImage с заданным параметром

function showDiv(which) {
   for(i = 0; i < 13; i++) {
      document.getElementById("image"+i).style.display="none";
   }
   //in the next 2 lines, you make sure which isn't lower than 1, and isn't greater than the number of images
   if(which < 1) which = 1;
   if(which > 13) which = 13;
   document.getElementById("image" + which).style.display = "block";
   currentImage = which;
} 
1 голос
/ 22 февраля 2012

В вашем javascript объявите глобальную переменную i, которая указывает, какой div в данный момент виден (например, в приведенном выше коде это 'imagei'). Когда пользователь нажимает на миниатюру div image4, скажем, установите i в 4 и т. Д.

Теперь для предыдущих / следующих кнопок вы уже знаете текущее значение i, поэтому вы знаете, какой div отображается. Увеличьте или уменьшите i сейчас, чтобы показать следующий div в последовательности.

И если вы хотите использовать только один div, вот сообщение в блоге , откуда вы можете скопировать весь код JavaScript для галереи, включая кнопки «следующий / предыдущий».

...