2014-12-15 2 views
0

Я работаю над своим аудиоплеером, и я пришел к той части, где хочу добавить активный класс к той песне, которая сейчас играет. Однако я немного смущен, потому что, похоже, я не могу правильно перехватить текущую песню после того, как песня закончилась в моей ul (li).Добавить активный класс к элементу LI в аудиоплеере

Это ссылка на мой личный домен, чтобы вы могли получить более четкую идею. Я надеюсь, что это не считается рекламой, у меня ничего нет в домене, но мои тесты и проекты: Link

Итак, каждый раз, когда вы нажимаете на песню, LI get является классом «активных», однако, если песня заканчивается, следующая песня не имеет класс «активный»

JSFiddle HERE

Хорошо, если это помощь, я собираюсь добавить конец функции дорожки здесь:

// Events linstener 
audio.addEventListener("ended", function() { switchTrack(); }); 

// Functions 
function switchTrack(event){ 
    $("ul li").removeClass('active'); 
    if(index == (obj.songsrc.length - 1)){ 
     index = 0; 
    } else { 
     index++;  
    } 
    playlist_status.innerHTML = obj.title[index]; 
    playlist_song.innerHTML = obj.songs[index]; 
    playlist_coverimage.src = "images/"+obj.images[index]+".jpg"; 
    audio.src = dir+obj.songsrc[index]+ext; 
    audio.play(); 
} 

И вот как я создаю LI:

for(var i = 0; i < obj.songsrc.length; i++) { 
    li = document.createElement("li"); 
    li.className = "songs_wrap"; 
    li.innerHTML = "<div class='songs_inner'>" + "<h4>"+obj.title[i]+ "</h4><p>" + obj.songs[i] + "</p></div>"; 
    mylist.appendChild(li); 
    if(audio.play) 
    $("li:nth-child(1)").addClass("active"); 
} 
+0

В строке с «if (audio.play)» отсутствует скобка расширения. Это должно быть: 'if (audio.play) { $ (" li: nth-child (1) "). AddClass (" active ");}' – shawnbro

+0

Правильно, но он по-прежнему ведет себя так, как должен. Проблема заключается в функции switchTrack, где я должен добавить активный класс к текущему воспроизведению LI. – SimeriaIonut

ответ

0

Возможно, вы захотите добавить слушателя к аудио-объекту.

audio.addEventListener('ended', function(e) { // do some class swapping });

Или что-то вдоль этих линий с Media events.

+0

Я забыл добавить его здесь, однако он был добавлен в мой код. Таким образом, функция ведет себя так, как должна, все работает отлично, за исключением того, что активный класс активируется на LI, который в данный момент воспроизводится. Пожалуйста, взгляните на ссылку. – SimeriaIonut

+0

У вас есть еще немного кода, который вы могли бы поделиться, чтобы было легче увидеть, что у вас уже есть? Может быть, в jsfiddle. – Matijs

+0

Выполнено, добавлено JSFiddle – SimeriaIonut