Как мне исправить этот код для моего слайда изображения? - PullRequest
0 голосов
/ 09 февраля 2020

Я делал свой веб-сайт и изо всех сил стараюсь, чтобы это изображение работало. Я копировал его из видео на YouTube, и все, что он делает, похоже, работает. Это второй раз, когда я пытался сделать один с javascript, а код, похоже, не работает вообще.

И да, я проверил свой javascript, и все было в порядке. почему мой компьютер не обрабатывает это?

<!DOCTYPE html>

<html>
    <head>
        <link href="style.css" type="text/css" rel="stylesheet">
        <title>Website title </title>

    </head>

    <body>
       <script src = "js/app.js"></script>

    <div class="carousel-container">
      <div class="carousel-slide">
        <img src= "img/img3.jpg" id="lastClone" alt="">
        <img src= "img/img1.jpg" alt="">
        <img src= "img/img2.jpg" alt="">
        <img src= "img/img3.jpg" alt="">
        <img src= "img/img1.jpg" id="firstClone" alt="">
      </div>
    </div>

    <button id="prevBtn">Prev</button>
    <button id="NextBtn">Next</button>


    </body>
</html>

CSS CODE

*{
    padding:0px;
    margin: 0px;
    box-sizing: border-box;
}
.carousel-container{
    width: 60%;
    margin: auto;
    /*overflow: hidden;*/
}
.carousel-slide{
    display: flex;
    width: 100%;
    height: 500px;
}

JAVASCRIPT CODE


const  carouselSlide = document.querySelector('.carousel-slide');
const carouselImages = document.querySelectorAll('.carousel-slide img');

//Buttons
const prevBtn = document.querySelector('#prevBtn');
const nextBtn = document.querySelector('#nextBtn');

//counter
let counter =1;
const size = carouselImages[0].clientWidth;

carouselSlide.style.transform = 'translateX(' + (-size * counter)+ 'px)';

//Button listeners
nextBtn.addEventListener('click', () => {
    if (counter <= carouselImages.length - 1) return;
    carouselSlide.style.transition = "transform 0.4s ease-in-out";
    counter++;
    carouselSlide.style.transform = 'translateX(' + (-size * counter)+ 'px)';

});

prevBtn.addEventListeners('click', () => {
    if (counter <= 0) return;
    carouselSlide.style.transition = "transform 0.4s ease-in-out";
    counter--;
    carouselSlide.style.transform = 'translateX(' + (-size * counter) = 'px)';

});

carouselSlide.addEventListener('tranistionend', ()=>{
    if (carouselImages[counter].id === 'lastClone'){
        carouselSlide.style.transform = "none";
        counter = carouselImages.length - 2;
        carouselSlide.style.transform = 'translateX(' + (-size * counter) = 'px)';
    }
    if (carouselImages[counter].id === 'firstClone'){
        carouselSlide.style.transform = "none";
        counter = carouselImages.length - counter;
        carouselSlide.style.transform = 'translateX(' + (-size * counter) = 'px)';

    }
});

1 Ответ

0 голосов
/ 09 февраля 2020

В коде JS есть пара несоответствий / ошибок, которые вы также можете проверить в журналах консоли соответствующего браузера

  1. В html коде следующий идентификатор кнопки - ' N extBtn ', но в вашем js он называется' nextBtn '
  2. Вместо prevBtn.addEventListeners(...) в вашем приложении должно было быть prevBtn.addEventListener(...). js код
  3. В коде прослушивателя кнопки в JS есть пара =, которые должны были быть +, например, вместо carouselSlide.style.transform = 'translateX(' + (-size * counter) = 'px)'; это должно было быть carouselSlide.style.transform = 'translateX(' + (-size * counter) + 'px)';
  4. Журналы прослушивателя nextbtn c всегда будет неуспешным, т. Е. Счетчик изначально инициализируется значением 1 и всегда будет меньше значения carouselImages.length, которое в данном случае равно 5. Вместо if (counter <= carouselImages.length - 1) return; измените его на if (counter >= carouselImages.length - 1) return;
  5. В стилях. css я вижу overflow: hidden; закомментировано. раскомментируйте его, и оно должно работать нормально
  6. Вам также необходимо переместить тег сценария в вашем коде HTML в конец тега body, т.е. после тега кнопки Next в вашем случае. Причина в том, что код js пытается вычислить ширину изображения (const size = carouselImages[0].clientWidth;) еще до инициализации элемента html.

Посмотрите на консоль браузера и попробуйте решить каждую из проблем.

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