Как я могу исправить функцию кнопки ползунка Javascript, которая объявляется, но ее значение никогда не читается? - PullRequest
0 голосов
/ 16 октября 2019

Я делаю слайдер HTML, CSS, Javascript с кнопками внизу, чтобы указать, какой слайд активен. Точки должны передавать значение 1,2,3 в функцию currentSlide, но, похоже, она не работает.

//HTML
<div id="slider">
    <div class="slide active">
         <p>slide1</p>
    </div>

    <div class="slide">
         <p>slide2</p>
    </div>

    <div class="slide">
         <p>slide3</p>
    </div>

    <div>
        <span class="dot" onclick="currentSlide(1)"></span>
        <span class="dot" onclick="currentSlide(2)"></span>
        <span class="dot" onclick="currentSlide(3)"></span>
    </div>
</div>

//CSS


//Javascript
var slideIndex = 1;
showSlides(slideIndex);

function currentSlide(n) {
  showSlides(slideIndex = n);
}

function showSlides(n) {
  var i;
  var slides = document.getElementsByClassName("slide");
  var dots = document.getElementsByClassName("dot");
  if (n > slides.length) {slideIndex = 1}    
  if (n < 1) {slideIndex = slides.length}
  for (i = 0; i < slides.length; i++) {
      slides[i].style.display = "none";  
  }
  for (i = 0; i < dots.length; i++) {
      dots[i].className = dots[i].className.replace(" active", "");
  }
  slides[slideIndex-1].style.display = "block";  
  dots[slideIndex-1].className += " active";
}

Любая обратная связь будет принята с благодарностью.

1 Ответ

2 голосов
/ 16 октября 2019

Вы никогда не устанавливали slideIndex в n, когда оно действительно было действительным значением - см. Изменения ниже во фрагменте.

//Javascript
var slideIndex = 1;
showSlides(slideIndex);

function currentSlide(n) {
  showSlides(n);
}

function showSlides(n) {
  var i;
  var slides = document.getElementsByClassName("slide");
  var dots = document.getElementsByClassName("dot");

  if (n > slides.length) {slideIndex = 1}    
  else if (n < 1) {slideIndex = slides.length}
  else { slideIndex = n }
  
  for (i = 0; i < slides.length; i++) {
      slides[i].style.display = "none";  
  }
  for (i = 0; i < dots.length; i++) {
      dots[i].className = dots[i].className.replace(" active", "");
  }

  slides[slideIndex-1].style.display = "block";  
  dots[slideIndex-1].className += " active";
}
<div id="slider">
    <div class="slide active">
         <p>slide1</p>
    </div>

    <div class="slide">
         <p>slide2</p>
    </div>

    <div class="slide">
         <p>slide3</p>
    </div>

    <div>
        <span class="dot" onclick="currentSlide(1)">1</span>
        <span class="dot" onclick="currentSlide(2)">2</span>
        <span class="dot" onclick="currentSlide(3)">3</span>
    </div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...