私は非常にひどいプログラマーであり、私が何を尋ねているかについてほとんど知りません。何を検索すればよいかよくわからないため、これに対する答えを検索するのは困難です。
配列内の次のトラックを再生する JavaScript 関数があります (このコードは今ではおなじみのようです!):
function loadPlayer() {
var audioPlayer = new Audio();
audioPlayer.controls=false;
audioPlayer.preload="auto";
audioPlayer.addEventListener('ended',nextSong,false);
audioPlayer.addEventListener('error',errorFallback,true);
audioPlayer.addEventListener('timeupdate',updateProgress, false);
document.getElementById("player").appendChild(audioPlayer);
nextSong();
}
function nextSong() {
if(urls[next]!=undefined) {
var audioPlayer = document.getElementsByTagName('audio')[0];
if(audioPlayer!=undefined) {
audioPlayer.src=urls[next];
audioPlayer.load();
audioPlayer.play();
next++;
} else {
loadPlayer();
}
} else {
alert('file missing!');
}
}
function errorFallback() {
nextSong();
}
これは、次の方法で関数を呼び出すと機能します。
<a href="#" onclick="nextSong()">Next!</a>
ただし、pickSong 関数を使用して配列内の項目 (項目 4 など) を選択した場合、[次へ] をクリックすると、配列内の 2 番目の項目に戻り、そこから続行します。トラック選択機能は次のとおりです。
function pickSong(num) {
next = num;
nextSong();
}
var urls = new Array();
urls[0] = '01_horses_mouth/mp3/01. Let The Dog See The Rabbit preface.mp3';
urls[1] = '01_horses_mouth/mp3/02. The Other Horse\'s Tale.mp3';
urls[2] = '01_horses_mouth/mp3/03. Caged Tango.mp3';
urls[3] = '01_horses_mouth/mp3/04. Crumbs.mp3';
var next = 0;
私はこれから何が欠けていますか?
編集:私はそれを解決したようです(最初はうまくいったかもしれませんが、今ではうまくいきます):
function nextSong() {
if(urls[next]!=undefined) {
var audioPlayer = document.getElementsByTagName('audio')[0];
if(audioPlayer!=undefined) {
audioPlayer.src=urls[next];
audioPlayer.load();
audioPlayer.play();
$('#playlistTitle').html(trackTitles[next++]);
} else {
loadPlayer();
}
} else {
alert('file missing!');
}
}
URLのタイトルを解析する方法を一生理解できなかったため、タイトルの新しい配列を作成する必要がありました。「現在再生中」のトラック タイトルの内外で非常に複雑な切り替えを行っていたため、プレイリスト タイトル div は既に存在していました。