2012-05-11 7 views
0

で動作します:JavaScriptメソッドポーズ()のみだから私はこのような機能を持っているオーディオ要素

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()を使用してトラックを一時停止することができます。問題は、たくさんのトラックがあり、それぞれのオーディオ要素を作成したくないため、javascriptでこれを実行したいということです。

なぜ最初のコードで後で音声を一時停止できないのですか?後で音声を一時停止させる方法はありますか?もしそうでなければ、歌のタイトルであるパラメータを渡すことによって、ジャバスクリプトからオーディオを再生することを含む何らかの選択肢がありますか?私はhtmlにsrcを含める必要はありません。

私はjQueryがこれに対して簡単な解決策を持っている可能性があると私は思っていますが、私が調査したものは何も見つかりませんでした。

+0

どのようにしてトラックを一時停止しているように動作し、あなたはそれを表示することができますか? – Starx

+0

たとえば、要素があります。 。 '<オーディオのid = "歌" srcは= "オーディオ">' と、私はそうのようにそれを再生するにはJavascriptを使用します。 '関数プレイ(){ のdocument.getElementById( "歌")(遊びます)。 } ' と一時停止する: ' function pause(){ document.getElementById( "song")。pause(); } ' 申し訳ありませんフォーマットに問題があります。何らかの理由で、改行がコメントに表示されません。 –

+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オブジェクトの機能を公開audio要素であると仮定するものを指し、 。 2番目の関数がどこでも動作するのは、DOM要素がDOM内に常に存在し、Audioオブジェクト/ APIを直接使用するのではなく、基礎となるAudio APIで参照するためです。

+0

ああ、そうです。そのため、上記のsetTimeoutの例が機能します。助けてくれてありがとう、ここに「感謝」や「名誉」を与える方法はありますか? –

+0

質問の上の矢印をクリックすると、回答を「投票する」ことができます。答えが効果的にあなたの質問に答えたら、チェックマークをクリックして回答を選択します。 – prodigitalson

0

私はちょうどスニペットをテストし、それは、そのような

function music(song) { 

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

} 
関連する問題