Help please with a slider! I don’t understand javascript (

I found a solution that suits me, but I just can’t customize it for myself. Found here .

My content slider got out of the container, attach photos

/* Индекс слайда по умолчанию */ var slideIndex = 1; showSlides(slideIndex); /* Функция увеличивает индекс на 1, показывает следующй слайд*/ function plusSlide() { showSlides(slideIndex += 1); } /* Функция уменьшяет индекс на 1, показывает предыдущий слайд*/ function minusSlide() { showSlides(slideIndex -= 1); } /* Устанавливает текущий слайд */ function currentSlide(n) { showSlides(slideIndex = n); } /* Основная функция слайдера */ function showSlides(n) { var i; var slides = document.getElementsByClassName("slider__block"); var dots = document.getElementsByClassName("slider-dots_item"); 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"; } 
 .slider { position: relative; } .slider__block { width: 840px; height: 200px; margin: 0px auto; padding: 10px 20px; box-shadow: 0 5px 8px -5px #000; } .slider__img { margin: 20px 20px 0px 0px; } .slider__block_text { margin-top: 15px; } .slider__block_fio { text-transform: uppercase; font-size: 1.067rem; font-family: 'MuseoSansCyrl-900'; margin-right: 33px; margin-left: -64px; } .slider__block_vk { text-transform: uppercase; font-size: 0.8rem; font-family: 'MuseoSansCyrl-900'; margin-right: 140px; color: #23aae2; border-bottom: 2px solid #cce6f6; } .slider__block_place { text-transform: uppercase; font-size: 0.8rem; font-family: 'MuseoSansCyrl-100'; color: #3eb0e4; } .slider__block_text-description { font-size: 0.933rem; font-family: 'MuseoSansCyrl-100Italic'; color: #363636; } /* Кнопки вперед и назад */ .slider .prev, .slider .next { cursor: pointer; position: absolute; top: 0; top: 50%; width: auto; margin-top: -22px; padding: 16px; color: #000; font-weight: bold; font-size: 18px; transition: 0.6s ease; border-radius: 0 3px 3px 0; } .slider .next { right: 0; border-radius: 3px 0 0 3px; } /* При наведении на кнопки добавляем фон кнопок */ .slider .prev:hover, .slider .next:hover { background-color: rgba(0, 0, 0, 0.8); } /* Кружочки */ .slider-dots { text-align: center; margin-top: 20px; } .slider-dots_item{ cursor: pointer; height: 12px; width: 12px; margin: 0 2px; background-color: #ddd; border-radius: 50%; display: inline-block; transition: background-color 0.6s ease; } .active, .slider-dots_item:hover { background-color: #aaa; } /* Анимация слайдов */ .slider .slider__block { -webkit-animation-name: fade; -webkit-animation-duration: 1.5s; animation-name: fade; animation-duration: 1.5s; } @-webkit-keyframes fade { from { opacity: .4 } to { opacity: 1 } } @keyframes fade { from { opacity: .4 } to { opacity: 1 } } 
 <div class="slider"> <div class="slider__block d-flex__row"> <div class=""> <img src="img/otziv-img.png" alt="Фото" class="slider__img"> </div> <div class="slider__block_text"> <div class="slider__block_text-row d-flex__widthHeight-center"> <p class="slider__block_fio"> 1Диана Апасова </p> <p class="slider__block_vk"> vk.com/apasova </p> <p class="slider__block_place"> Москва → София </p> </div> <div class="slider__block_text-description"> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in </div> </div> </div> <div class="slider__block d-flex__row"> <div class=""> <img src="img/otziv-img.png" alt="Фото" class="slider__img"> </div> <div class="slider__block_text"> <div class="slider__block_text-row d-flex__widthHeight-center"> <p class="slider__block_fio"> 2Диана Апасова </p> <p class="slider__block_vk"> vk.com/apasova </p> <p class="slider__block_place"> Москва → София </p> </div> <div class="slider__block_text-description"> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in </div> </div> </div> <div class="slider__block d-flex__row"> <div class=""> <img src="img/otziv-img.png" alt="Фото" class="slider__img"> </div> <div class="slider__block_text"> <div class="slider__block_text-row d-flex__widthHeight-center"> <p class="slider__block_fio"> 3Диана Апасова </p> <p class="slider__block_vk"> vk.com/apasova </p> <p class="slider__block_place"> Москва → София </p> </div> <div class="slider__block_text-description"> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in </div> </div> </div> <a class="prev" onclick="minusSlide()">◀</a> <a class="next" onclick="plusSlide()">▶</a> </div> <div class="slider-dots"> <span class="slider-dots_item" onclick="currentSlide(1)"></span> <span class="slider-dots_item" onclick="currentSlide(2)"></span> <span class="slider-dots_item" onclick="currentSlide(3)"></span> </div> 

That's what happens

That's what now, you need to link the slider with the circles at the bottom

  • Guys, I sort of figured out with a slider, but now the circles below disappear. The console displays an error in the last line of the JS code. - Darya
  • Show this error. - Stepan Kasyanenko
  • Now everything is OK with the slider, everything is in place, as it should. But the last nuance remained ... I need the lower circles to be connected with the slider, I understand that the last line of the JS code is responsible for this ?? - Darya

1 answer 1

 /* Индекс слайда по умолчанию */ var slideIndex = 1; showSlides(slideIndex); /* Функция увеличивает индекс на 1, показывает следующй слайд*/ function plusSlide() { showSlides(slideIndex += 1); } /* Функция уменьшяет индекс на 1, показывает предыдущий слайд*/ function minusSlide() { showSlides(slideIndex -= 1); } /* Устанавливает текущий слайд */ function currentSlide(n) { showSlides(slideIndex = n); } /* Основная функция слайдера */ function showSlides(n) { var slides = document.getElementsByClassName("slider__block"); var dots = document.getElementsByClassName("slider-dots_item"); if (n > slides.length) { slideIndex = 1 } if (n < 1) { slideIndex = slides.length } for (var i = 0; i < slides.length; i++) { slides[i].style.display = "none"; } for (var i = 0; i < dots.length; i++) { dots[i].className = dots[i].className.replace("active", " "); } slides[slideIndex - 1].style.display = "block"; /* необходимо добавить пробел сюда - " active" */ dots[slideIndex - 1].className += " active"; } 
 .slider { position: relative; } .slider__block { width: 840px; height: 200px; margin: 0px auto; padding: 10px 20px; box-shadow: 0 5px 8px -5px #000; } .slider__img { margin: 20px 20px 0px 0px; } .slider__block_text { margin-top: 15px; } .slider__block_fio { text-transform: uppercase; font-size: 1.067rem; font-family: 'MuseoSansCyrl-900'; margin-right: 33px; margin-left: -64px; } .slider__block_vk { text-transform: uppercase; font-size: 0.8rem; font-family: 'MuseoSansCyrl-900'; margin-right: 140px; color: #23aae2; border-bottom: 2px solid #cce6f6; } .slider__block_place { text-transform: uppercase; font-size: 0.8rem; font-family: 'MuseoSansCyrl-100'; color: #3eb0e4; } .slider__block_text-description { font-size: 0.933rem; font-family: 'MuseoSansCyrl-100Italic'; color: #363636; } /* Кнопки вперед и назад */ .slider .prev, .slider .next { cursor: pointer; position: absolute; top: 0; top: 50%; width: auto; margin-top: -22px; padding: 16px; color: #000; font-weight: bold; font-size: 18px; transition: 0.6s ease; border-radius: 0 3px 3px 0; } .slider .next { right: 0; border-radius: 3px 0 0 3px; } /* При наведении на кнопки добавляем фон кнопок */ .slider .prev:hover, .slider .next:hover { background-color: rgba(0, 0, 0, 0.8); } /* Кружочки */ .slider-dots { text-align: center; margin-top: 20px; } .slider-dots_item{ cursor: pointer; height: 12px; width: 12px; margin: 0 2px; background-color: #ddd; border-radius: 50%; display: inline-block; transition: background-color 0.6s ease; } .active, .slider-dots_item:hover { background-color: #aaa; } /* Анимация слайдов */ .slider .slider__block { -webkit-animation-name: fade; -webkit-animation-duration: 1.5s; animation-name: fade; animation-duration: 1.5s; } @-webkit-keyframes fade { from { opacity: .4 } to { opacity: 1 } } @keyframes fade { from { opacity: .4 } to { opacity: 1 } } 
 <div class="slider"> <div class="slider__block d-flex__row"> <div class=""> <img src="img/otziv-img.png" alt="Фото" class="slider__img"> </div> <div class="slider__block_text"> <div class="slider__block_text-row d-flex__widthHeight-center"> <p class="slider__block_fio"> 1Диана Апасова </p> <p class="slider__block_vk"> vk.com/apasova </p> <p class="slider__block_place"> Москва → София </p> </div> <div class="slider__block_text-description"> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in </div> </div> </div> <div class="slider__block d-flex__row"> <div class=""> <img src="img/otziv-img.png" alt="Фото" class="slider__img"> </div> <div class="slider__block_text"> <div class="slider__block_text-row d-flex__widthHeight-center"> <p class="slider__block_fio"> 2Диана Апасова </p> <p class="slider__block_vk"> vk.com/apasova </p> <p class="slider__block_place"> Москва → София </p> </div> <div class="slider__block_text-description"> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in </div> </div> </div> <div class="slider__block d-flex__row"> <div class=""> <img src="img/otziv-img.png" alt="Фото" class="slider__img"> </div> <div class="slider__block_text"> <div class="slider__block_text-row d-flex__widthHeight-center"> <p class="slider__block_fio"> 3Диана Апасова </p> <p class="slider__block_vk"> vk.com/apasova </p> <p class="slider__block_place"> Москва → София </p> </div> <div class="slider__block_text-description"> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in </div> </div> </div> <a class="prev" onclick="minusSlide()">◀</a> <a class="next" onclick="plusSlide()">▶</a> </div> <div class="slider-dots"> <span class="slider-dots_item" onclick="currentSlide(1)"></span> <span class="slider-dots_item" onclick="currentSlide(2)"></span> <span class="slider-dots_item" onclick="currentSlide(3)"></span> </div> 

  • Please comment on what you changed and why - Kromster
  • In this code, an error was made. dots [slideIndex - 1] .className + = "active"; - in this line you need to add a space before the "active" because there was a gluing of classes. - Sergey Kovalenko
  • Enter this in the answer, please, the "edit" button. The comment can then be deleted. - Kromster