слайд-шоу не работает, но также не показывает ошибки - PullRequest
0 голосов
/ 18 апреля 2020

Я пытался сделать слайд-шоу с HTML и JavaScript, но это не работает, и я не получаю ошибки. У меня есть 2 сценария ... один, чтобы поместить изображения в html, а другой, чтобы сделать его слайд-шоу. Это JavaScript, чтобы показать показать изображения:

var folder = "uploads/";
var img = "<img src='";
var imgStyle = "style='width:100%'";
var imgClass = "class='slide'";
$.ajax({
  url : folder,
  success : function (data) {
    $(data).find("a").attr("href", function (i, val){
      if( val.match(/\.(jpe?g|png|gif)$/) ) {
        $( "#slideshow" ).append( img + folder + val + "'" + imgClass + imgStyle + ">");
      }
    });
  }
});

Выше работает нормально, но проблема в слайд-шоу. Без файла слайд-шоу. js отображаются изображения, но как только я запускаю слайд-шоу javascript, все становится невидимым. Вот код из слайд-шоу. js file:

var slides = document.querySelectorAll('#slideshow .slide'),
  currentSlide = 0,
  firstBtn = document.getElementById('one'),
  secondBtn = document.getElementById('two'),
  thirdBtn = document.getElementById('three');

function getAllSiblings(elem, filter) {
  var sibs = [];
  elem = elem.parentNode.firstChild;
  do {
    if (elem.nodeType === 3) continue; // text node
    if (!filter || filter(elem)) sibs.push(elem);
  } while (elem = elem.nextSibling)
  return sibs;
}

function nextSlide() {
  slides[currentSlide].className = 'slide';
  currentSlide = (currentSlide + 1) % slides.length;
  slides[currentSlide].className = 'slide active';
};

firstBtn.onclick = function() {
  var slide = getAllSiblings(slides[0]);
  slide.forEach(function(el) {
    el.classList.remove('active');
  });
  slides[0].className = 'slide active';
  var result = getAllSiblings(this);
  result.forEach(function(el) {
    el.classList.remove('active');
  })
  this.classList.add('active');

};
secondBtn.onclick = function() {
  var slide = getAllSiblings(slides[1]);
  slide.forEach(function(el) {
    el.classList.remove('active');
  });
  slides[1].className = 'slide active';
  var result = getAllSiblings(this);
  result.forEach(function(el) {
    el.classList.remove('active');
  })
  this.classList.add('active');

};
thirdBtn.onclick = function() {
  var slide = getAllSiblings(slides[2]);
  slide.forEach(function(el) {
    el.classList.remove('active');
  });
  slides[2].className = 'slide active';
  var result = getAllSiblings(this);
  result.forEach(function(el) {
    el.classList.remove('active');
  })
  this.classList.add('active');
};
<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <link rel="stylesheet" href="css/index2.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
  <script src="js/display.js"></script>
  <script defer src="js/slideshow.js"></script>
  <title>Test Images</title>
</head>

<body>
  <div id="slideshow">

  </div>
  <div class="controllers">
    <span id='one' class='active'></span>
    <span id='two'></span>
    <span id='three'></span>
  </div>
</body>

</html>

Вот кодовое перо для дисплея: https://codepen.io/ksaeidnia0/pen/BaozNzP

Вот кодовое перо для слайд-шоу : https://codepen.io/ksaeidnia0/pen/ZEbOGWz

1 Ответ

2 голосов
/ 18 апреля 2020

Я предлагаю использовать встроенное слайд-шоу из bootstrap, нажмите здесь для получения дополнительной информации. Пример кода ниже. Это намного проще, и вы также можете иметь подписи.

<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
  <ol class="carousel-indicators">
    <li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
    <li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
    <li data-target="#carouselExampleIndicators" data-slide-to="2"></li>
  </ol>
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img class="d-block w-100" src="..." alt="First slide">
    </div>
    <div class="carousel-item">
      <img class="d-block w-100" src="..." alt="Second slide">
    </div>
    <div class="carousel-item">
      <img class="d-block w-100" src="..." alt="Third slide">
    </div>
  </div>
  <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>
  <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>
</div>

Не забудьте импортировать bootstrap по этому коду

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">

или те, если хотите JavaScript и другие

<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>

Вы также можете изменить источник изображения на Javascript чем-то вроде

document.getElementById("myImg").src = "TheImage";

Для получения дополнительной информации нажмите здесь - w3school , здесь - w3school и здесь - stackoverflow question

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...