테스트 사이트 - 개발 중인 베타 버전입니다

자바 스크립트 질문드립니다. 채택완료

dispit 7년 전 조회 1,784

https://jsfiddle.net/L8ozmtye/1/">https://jsfiddle.net/L8ozmtye/1/

 

</p>

<p><video id="video" width="500" height="300" controls autoplay>

    <source id="src" src="" type="video/mp4">

</video></p>

<p>
</p>

<p><button type="button" id="a">버튼 A</button>

<button type="button" id="b">버튼 B</button></p>

<p><script>

var a = document.getElementById("a");

var b = document.getElementById("b");

var video = document.getElementById("video");

var src = document.getElementById("src");

var video1 = "<a href="https://media.w3.org/2010/05/sintel/trailer.mp4";" target="_blank" rel="noopener noreferrer">https://media.w3.org/2010/05/sintel/trailer.mp4";</a>

var video2 = "<a href="http://media.w3.org/2010/05/bunny/trailer.mp4";" target="_blank" rel="noopener noreferrer">http://media.w3.org/2010/05/bunny/trailer.mp4";</a></p>

<p>a.addEventListener("click", function(){

        video.pause();

    src.setAttribute("src", video1);

    video.load();

    video.addEventListener("ended", function(){

     alert("종료 메세지 A");

});

});</p>

<p>b.addEventListener("click", function(){

        video.pause();

    src.setAttribute("src", video2);

    video.load();

    video.addEventListener("ended", function(){

     alert("종료 메세지 B");

});

});

</script></p>

<p>

 

버튼 A를 클릭한 동영상이 끝나면 종료 메세지 A가 나오게 하고

버튼 B를 클릭한 동영상이 끝나면 종료 메세지 B가 나오게 하려고 합니다.

하지만, 버튼 A를 클릭하고 버튼 B를 클릭하면

버튼 B 영상에서 종료메세지 A 이후 종료 메세지 B 총 2개가 뜹니다..

검색도 해보고 했는데 어디가 잘못됐는지 잘 모르겠습니다..

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

답변 3개

채택된 답변
+20 포인트
S
7년 전

임의로 구분자 값을 줘서 비교해서 알렛창을 사용하면 될듯...

 

  <video id="video" width="500" height="300" controls autoplay>
    <source id="src" src="" type="video/mp4">
</video>

<br>
<button type="button" id="a">버튼 A</button>
<button type="button" id="b">버튼 B</button>

<script>
var a = document.getElementById("a");
var b = document.getElementById("b");
var video = document.getElementById("video");
var src = document.getElementById("src");
var video1 = "https://media.w3.org/2010/05/sintel/trailer.mp4";
var video2 = "http://media.w3.org/2010/05/bunny/trailer.mp4";


a.addEventListener("click", function(){
    gubun = "A";
    video.pause();    
    src.setAttribute("src", video1);
    video.load();
    video.addEventListener("ended", function(){
        if(gubun =="A"){
         alert("종료 메세지 A");
         gubun = ""; // gubun reset
        }
    });
});

b.addEventListener("click", function(){
    gubun = "B";
    video.pause();
    src.setAttribute("src", video2);
    video.load();
    video.addEventListener("ended", function(){
      if(gubun =="B"){
        alert("종료 메세지 B");
        gubun = ""; // gubun reset
      }
    });
});
</script>

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

답변에 대한 댓글 1개

d
dispit
7년 전
https://sir.kr/qa/252024?page=0&posting=ok&sst=wr_num
시간 나실 때 답변 부탁드립니다!

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

7년 전

그리고 video 객체에 ended event를 두 번 등록했으니 두번 뜨게 되는게 맞습니다 

play여부와 관계 없이 ended event를 한번만 등록하고, 어느 동영상을 재생중이었는지 다른 변수에 저장하세요 

 

</p>

<p>var video_message = "nothing";</p>

<p>$('#a').click(function() {

 video_message = "AAA";

 // play video

});</p>

<p>$('#b').click(function() {

 video_message = "BBB";

 // play video

});</p>

<p>$('#video').ended(function() {

  alert(video_message);

});</p>

<p>

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

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

7년 전

일단 jQuery 사용을 권장 드립니다

var a = $('#a');

var b = $('#b');

a.listen(function(){ 
 video.pause(); 
 // ~~ 
});
형태로 간략히 코드를 작성할 수 있습니다. 

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

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

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

로그인