자바 스크립트 질문드립니다.

자바 스크립트 질문드립니다.

QA

자바 스크립트 질문드립니다.

본문

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

 


<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(){
        video.pause();
    src.setAttribute("src", video1);
    video.load();
    video.addEventListener("ended", function(){
     alert("종료 메세지 A");
});
});
b.addEventListener("click", function(){
        video.pause();
    src.setAttribute("src", video2);
    video.load();
    video.addEventListener("ended", function(){
     alert("종료 메세지 B");
});
});
</script>

 

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

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

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

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

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

이 질문에 댓글 쓰기 :

답변 3

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

 

  <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>

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

var a = $('#a');

var b = $('#b');

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

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

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

 


var video_message = "nothing";
$('#a').click(function() {
 video_message = "AAA";
 // play video
});
$('#b').click(function() {
 video_message = "BBB";
 // play video
});
$('#video').ended(function() {
  alert(video_message);
});
답변을 작성하시기 전에 로그인 해주세요.
전체 2,635
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT