HTML5 MP3 Player spielt nicht alle Songs nacheinander ab.


Thomas_Jung

Erfahrenes Mitglied
Hallo,
wenn ich einen neuen Titel zur Playliste hinzufüge wird dieser nicht mit abgespielt.
Muss ich die Playliste nach dem hinzufügen von einen oder meheren Titeln neu initialisiert werden.
Wenn ja wie mach ich das am besten :)

Gruß Thomas


Javascript:
    $(window).load(function(){
      
        var audio;
        var playlist;
        var tracks;
        var current;
        
        init();
        function init(){
            current = 0;
            audio = $('audio');
            playlist = $('#playlist');
            tracks = playlist.find('li a');
            len = tracks.length;
            audio[0].volume = .10;
            playlist.find('a').click(function(e){
                e.preventDefault();
                link = $(this);
                current = link.parent().index();
                run(link, audio[0]);
            });
            audio[0].addEventListener('ended',function(e){
                current++;
                if(current == len){
                    current = 0;
                    link = playlist.find('a')[0];
                }else{
                    link = playlist.find('a')[current];   
                }
                run($(link),audio[0]);
            });
        }
        function run(link, player){
                player.src = link.attr('href');
                par = link.parent();
                par.addClass('active').siblings().removeClass('active');
                audio[0].load();
                audio[0].play();
        }
    
    });
 
 
 
    $(document).ready(function() {
        
        $(document).on('click', '.insert_to_playlist', function(evt) {
    
            var id = $(this).attr("id");
            var url = $(this).data("url");
            var name = $(this).data("name");
            var artist = $(this).data("artist");
            var album = $(this).data("album");
    
            $("#playlist").append('<li><a class="sort" href="' + url + '">' + name + ' / ' + artist + '</a></li>');
        });

    });
 

Sempervivum

Erfahrenes Mitglied
Ja, am besten nur die Titel, die hinzu gefügt wurden, initialisieren. Könnte man z. B. so aufziehen:
Javascript:
        function init(added){
            current = 0;
            audio = $('audio');
            playlist = $('#playlist');
            tracks = playlist.find('li a');
            len = tracks.length;
            audio[0].volume = .10;
            playlist.find('a:not(.inited)').addClass('inited').click(function(e){
                e.preventDefault();
                link = $(this);
                current = link.parent().index();
                run(link, audio[0]);
            });
            if (!added) {
                audio[0].addEventListener('ended',function(e){
                    current++;
                    if(current == len){
                        current = 0;
                        link = playlist.find('a')[0];
                    }else{
                        link = playlist.find('a')[current];  
                    }
                    run($(link),audio[0]);
                });
            }
        }
(ungetestet)
 
Zuletzt bearbeitet: