2026, 새로운 도약을 시작합니다.

Swiper 슬라이더 관련 문의 채택완료

안녕하세요~ 작업중에 잘 안되는 부분이 있어 이렇게 문의드립니다.

1번 슬라이드에서 btnPlay1 클릭시 음악이 재생이되면서 4번 슬라이드까지 계속재생이되고 5번~6번 슬라이드에서는 음악이 자동으로 멈추게 작성했습니다.

문제는 6번 슬라이드에서 1번 슬라이드로 이동후에 btnPlay1 클릭하면 음악이 처음부터 재생이 되어야 하는데 음악이 나오지 않습니다.

6번 슬라이드 다음슬라이드가 1번 슬라이드입니다.

즉 1번 -> 2번 -> 3번 -> 4번 -> 5번 -> 6번 -> 1번

어떻게 해야 되는지 고수님들의 조언 부탁드리겠습니다.

작성된 코드는 다음과 같습니다.

Copy




  

    

      

 

        

          

             

             

          

        

 

        

          

            

              

              

              

              이 문장은 여러분의 브라우저가 video 태그를 지원하지 않을 때 화면에 표시됩니다!

            

          

        

 

        

          

             

             

          

        

 

        

          

             

             

          

        

 

        

          

            

              

              

              

              이 문장은 여러분의 브라우저가 video 태그를 지원하지 않을 때 화면에 표시됩니다!

            

          

        

 

        

          

             

             

          

        

      

 

      

      

      

    

  



 



// Audio 객체 설정 (동일한 오디오 파일을 사용)

const audio1 = new Audio("/song1.mp3");

 

// 버튼 취득

const btnPlay1 = document.getElementById("btnPlay1");

const btnPlay2 = document.getElementById("btnPlay2");

const btnPlay3 = document.getElementById("btnPlay3");

const btnPlay4 = document.getElementById("btnPlay4");

const btnPlay5 = document.getElementById("btnPlay5");

const btnPlay6 = document.getElementById("btnPlay6");

 

let isPlaying = false;

 

// 슬라이드 1p에서 음악 재생

btnPlay1.onclick = function () {

    if (!isPlaying) {

        playAudio(audio1);

        isPlaying = true;

    }

}

 

// 슬라이드 2p에서 음악 일시 정지

btnPlay2.onclick = function () {

    if (isPlaying) {

        pauseAudio(audio1);

        isPlaying = false;

    }

}

 

// 슬라이드 3p에서 음악 일시 정지

btnPlay3.onclick = function () {

    if (isPlaying) {

        pauseAudio(audio1);

        isPlaying = false;

    }

}

 

// 슬라이드 4p에서 음악 일시 정지

btnPlay4.onclick = function () {

    if (isPlaying) {

        pauseAudio(audio1);

        isPlaying = false;

    }

}

 

// 슬라이드 5p에서 음악 일시 정지

btnPlay5.onclick = function () {

    if (isPlaying) {

        pauseAudio(audio1);

        isPlaying = false;

    }

}

 

// 슬라이드 6p에서 음악 일시 정지

btnPlay6.onclick = function () {

    if (!isPlaying) {

        playAudio(audio1);

        isPlaying = false;

    }

}

 

// Swiper 슬라이더 초기화

var swiper = new Swiper('.swiper-container', {

    // 슬라이드 설정

    slidesPerView: 1,

    spaceBetween: 0,

    loop: true,

    navigation: {

        nextEl: '.swiper-button-next',

        prevEl: '.swiper-button-prev',

    },

    pagination: {

        el: '.swiper-pagination',

        clickable: true,

    },

    autoplay: false, // 자동 재생을 비활성화

});

 

// 슬라이드 변경 이벤트 감지

swiper.on('slideChange', function () {

    var activeIndex = swiper.activeIndex;

    // 슬라이드가 변경될 때 음악을 관리하도록 추가 코드 작성

    if (activeIndex >= 5) {

        if (isPlaying) {

            pauseAudio(audio1);

            isPlaying = false;

        }

    }

});

 

// 모든 오디오 일시 정지

function pauseAllAudios() {

    audio1.pause();

    isPlaying = false;

}

 

// 특정 음악 재생

function playAudio(audio) {

    pauseAllAudios();

    audio.currentTime = 0;

    audio.play();

    isPlaying = true;

}

 

// 음악 일시 정지

function pauseAudio(audio) {

    audio.pause();

    isPlaying = false;

}



답변 2개

채택된 답변
+20 포인트

무엇을 하려는지 정확히 파악하지 못하겠으나...

저 같으면 부여된 코드에서 사운드 부분은 아래처럼 짤 것 같습니다.

Copy




1

2

3

4

5

6




PLAY



currentSec = 0;

for (i = 1; i 

https://wittazzurri.com/editor/html_editor.php 에서 확인해 보세요.

참고로 myPlayer 의 음원을 바꿔주는 이벤트는 아래와 같습니다.

myPlayer.src = "음원주소";

----------

지금보니 아래처럼 코드를 줄이는게 더 좋겠네요.

Copy




1

2

3

4

5

6




PLAY



currentSec = 0;

playBtn.onclick = function() {

    myPlayer.play();

    myPlayer.currentTime = currentSec;

}

for (i = 1; i 
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

@비타주리 덕분에 한가지 배워갑니다.

댓글을 작성하려면 로그인이 필요합니다.

처음부터 다시 재생 하도록

// 슬라이드 변경 이벤트 감지
swiper.on('slideChange', function () {
    var activeIndex = swiper.activeIndex;
    // 슬라이드가 변경될 때 음악을 관리하도록 추가 코드 작성
    if (activeIndex >= 5) {
        if (isPlaying) {
            pauseAudio(audio1);
            isPlaying = false;
        }
    }
});

이것을 수정을 하시면 됩니다.

// 슬라이드 변경 이벤트 감지
swiper.on('slideChange', function () {
    var activeIndex = swiper.activeIndex;
    // 슬라이드가 변경될 때 음악을 관리하도록 추가 코드 작성
    if (activeIndex === 0) {
        if (!isPlaying) {
            playAudio(audio1);
            isPlaying = true;
        }
    } else if (isPlaying) {
        pauseAudio(audio1);
        isPlaying = false;
    }
});

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

답변주셔서 감사합니다.~ 알려주신 방법대로 해도 안되는군요..ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고