Я перечитал подобные вопросы многих людей и не нашел ответа.Поэтому я задаю свой вопрос.
Я создаю функцию, которая позволяет моим пользователям воспроизводить все аудиодорожки на странице, которую они просматривают.Однако, чтобы мой аудиоплеер изначально отображался на странице, мне нужно хотя бы один раз initPlayer()
, когда пользователь нажимает кнопку Play All.
Проблема в том, что я использую цикл for для итерациивсе идентификаторы песен в массиве, чтобы заполнить список воспроизведения песнями.
var theids = ids.split(",");
for (var i = 0; i < theids.length; i++) {
getItem(theids[i], type).done(function(obj) {
if (obj.status == 'success') {
mep.mepPlaylistTracks = obj.tracks;
initPlayer();
addToPlay(obj.tracks, play);
}
});
}
initPlayer()
использует информацию из моей функции getItem()
, чтобы правильно инициировать первый раз.Таким образом, он должен быть расположен в следующем порядке.
Есть ли способ, которым я могу запустить свою функцию initPlayer()
только один раз в моем цикле for
?Это заставляет мой проигрыватель переинициализироваться каждый раз, когда песня добавляется в список воспроизведения, что вызывает проблемы с производительностью и визуальными проблемами.
Возможны ли такие вещи в Javascript?
Правитьдобавить функции initPlayer()
и getItem()
.Я новичок в Javascript
, любая помощь приветствуется.
// init player
function initPlayer(){
$('.app-player').removeClass('hide');
$('#app').removeClass('hide-player');
var playlist = $( '.playlist' ).mepPlaylist({
audioHeight: '40',
audioWidth: '100%',
videoHeight: '40',
videoWidth: '100%',
audioVolume: 'vertical',
mepPlaylistLoop: true,
alwaysShowControls: true,
mepSkin: 'mejs-audio',
mepResponsiveProgress: true,
mepAutoPlay: false,
mepSelectors: {
playlist: '.playlist',
track: '.track',
tracklist: '.tracks'
},
features: [
//'meplike',
'mepartwork',
'mepcurrentdetails',
'mepplaylist',
'mephistory',
'mepprevioustrack',
'playpause',
'mepnexttrack',
'progress',
'current',
'duration',
'volume',
'mepicons',
'meprepeat',
'mepshuffle',
'mepsource',
'mepbuffering',
'meptracklist',
'mepplaylisttoggle',
'youtube'
],
mepPlaylistTracks: mep.mepPlaylistTracks
});
function getItem(id, type){
return $.ajax({
type : "post",
dataType : "json",
url : ajax.ajax_url,
data : {action: "ajax_music", id: id, type: type, nonce: ajax.nonce}
});
}