2012-05-11 4 views
0

그래서 나는이 같은 기능이 오디오 요소로 작동합니다자바 스크립트 방법 일시 중지()는

function music(song) { 
var audio = new Audio("audio/" + song + ".ogg"); 
audio.play(); 
} 

내가 데 문제가 그 audio.play()가 완벽하게 작동하지만, 나는 오디오를 시도하는 경우 .pause() 나중에 (동일한 변수를 정의한 후에) 작동하지 않습니다. 내가 할 경우,이 :

function music() { 
var audio = document.getElementById("songname"); 
audio.play(); 
} 

은 그 때 나는 트랙을 일시 중지 변수 나중에 사용 audio.pause()를 정의 할 수 있습니다. 문제는 내가 많은 트랙을 가지고 있고 각각을위한 오디오 요소를 만들고 싶지 않기 때문에 자바 스크립트 안에서 이것을하고 싶다는 것이다.

첫 번째 코드를 사용하여 나중에 오디오를 일시 중지 할 수없는 이유는 무엇입니까? 나중에 오디오를 일시 정지시킬 수있는 방법이 있습니까? 그렇지 않다면 노래 제목 인 매개 변수를 전달하여 자바 스크립트에서 오디오를 재생하는 것과 관련된 대안이 있습니까? 나는 html에 src를 포함하고 싶지 않다.

나는 jQuery가이 문제에 대한 쉬운 해결책을 가지고 있을지도 모른다고 생각하지만, 내가 조사한 것의 형태로 아무것도 찾을 수 없다고 생각한다.

+0

로 작동? – Starx

+0

예를 들어, 요소가 있습니다. 'document.getElementById ("노래"). 재생(); '<오디오 id = "노래"src = "오디오">' 와 나는 이렇게 재생하기 위해 자바 스크립트를 사용합니다. }' 및 일시 중지 : 'function pause() { document.getElementById ("노래"). 일시 중지(); }' 죄송합니다. 형식이 잘못되었습니다. 어떤 이유로 내 줄 바꿈이 주석에 표시되지 않습니다. –

+0

그런 식으로 작동해야합니다. – Starx

답변

1

audio은 기능 내에 만 존재합니다. 당신이 기능을 외부에서 액세스해야하는 경우 다음 작성중인 Audio 개체의 인스턴스를 반환 :

function getAudio(song, play) { 
var audio = new Audio("audio/" + song + ".ogg"); 
    if(play) { 
    audio.play(); 
    } 

    return audio; 
} 

var theTrack = getAudio('my_song', true); 
theTrack.pause(); // pause the song 
theTrack.play(); // play the song 

두 번째 예는 내가 차례로 Audio 객체의 기능을 노출하는 오디오 요소 가정 무엇을 의미 . 두 번째 함수가 어디서든지 작동하는 이유는 DOM 요소가 DOM에 항상 존재하고 Audio 객체/API를 직접 사용하는 것과 달리 기본 Audio API에서 참조하도록 DOM 요소를 참조하기 때문입니다.

+0

아, 알겠습니다. 이것이 위의 setTimeout 예제가 작동하는 이유입니다. 도움을 주셔서 감사합니다. 여기에 '감사'또는 '명성'을 줄 수있는 방법이 있습니까? –

+0

질문 위에있는 화살표를 클릭하여 답변에 "투표"할 수 있습니다. 대답이 효과적으로 질문에 대답하면 선택 표시를 클릭하여 답을 선택하십시오. – prodigitalson

0

은 그냥 조각을 테스트하고 당신이 그것을 보여줄 수있는 방법 당신이 트랙을 일시 중지하는 등

function music(song) { 

    var audio = new Audio("audio/" + song + ".ogg"); 
    audio.play(); 
    setTimeout(function() { audio.pause(); }, 5000); 

} 
관련 문제