0

私はjavascriptで自分の音楽プレーヤーを作っていて、次の曲のボタンに取り組んでいます。曲をプレイリストに追加し、対応する ID 番号を配列に格納するように設定しました。次に、曲の現在の ID を探して配列にインデックスを付け、ユーザーが次にヒットすると、配列内の次の曲に移動します。

これが私のコードです:

    $(document).ready(function(){
    $("#player").prop("volume",".5");
});

    var xmlhttp=new XMLHttpRequest();
    xmlhttp.open("GET","playlist.xml",false);
    xmlhttp.send();
    xmlDoc=xmlhttp.responseXML;
    var songlist = new Array();
    var currentSong;

function song_play(song_id){
    var player = document.getElementById("player");
    player.setAttribute("src", "Music/"+song_id+".mp3");
    player.play();

    songlist.push(song_id);
    alert(JSON.stringify(songlist));
    currentSong = song_id;

            var new_id=song_id-1;
            $("#marquee").empty();
            $("#marquee").append("<span style='color:red;'>Now Playing: </span>"+xmlDoc.getElementsByTagName("artist")[new_id].childNodes[0].nodeValue+"-");
            $("#marquee").append(xmlDoc.getElementsByTagName("track")[new_id].childNodes[0].nodeValue);

};

function add_song(song_id,new_id){
    var artist = xmlDoc.getElementsByTagName("artist")[new_id].childNodes[0].nodeValue;
    var track = xmlDoc.getElementsByTagName("track")[new_id].childNodes[0].nodeValue;
    $("#song_list").append("<a id="+song_id+" href='javascript:void(0)' onclick='song_play(this.id);' class='song'>"+artist+"-"+track+"</a><br/>");
};

function nextSong(currentSong){
        var currentSongIndex = songlist.indexOf(currentSong);
        var newSong = songlist[currentSongIndex + 1];
        song_play(newSong);
};

私が経験している問題は、次のボタンを押すと、音楽の再生がすべて停止することです。

4

1 に答える 1

1

newSong は、曲の ID ではなく曲オブジェクトを表しており、song_play メソッドは実際には曲 ID を使用しています。nextSong 関数を次のように変更します。

function nextSong(currentSong){
    var currentSongIndex = songlist.indexOf(currentSong);
    song_play(currentSongIndex + 1);
};
于 2013-10-29T05:07:43.117 に答える