2016-10-11 9 views
0

Привет Я пытаюсь создать музыкальный плеер, который будет воспроизводить песни на веб-сайте с помощью javascript.необходимо отображать различные части массива javascript

У меня возникают проблемы, когда я пытаюсь разрезать массив, чтобы вынуть песни.

вар файлов = [ "Рух-boys.mp3", // - Jay Z "dirt.mp3", // - Jay Z "99.mp3", // - Jay Z «чувствую-это .mp3 ", // - Jay Z ];

так вот, как у меня есть массив.

function createAudioElements() { 
    files = files.slice(5,9); 
    for (f in files) { 
     var audioString = "<audio id=\"audio-" + f + "\" class=\"audio\" preload=\"true\"><source src=\"audio/" + files[f] + "\"></audio>"; 



function createAudioElements() { 
      files = files.slice(5,9); 
      for (f in files) { 
      var audioString = "<audio id=\"audio-" + f + "\" class=\"audio\" preload=\"true\"><source src=\"audio/" + files[f] + "\"></audio>"; 

     $("#audio-players").append(audioString); 

    } 
} 


    function createAudioPlayers() { 
    for (f in files) { 
     var playerString = "<div id=\"audioplayer-" + f + "\" class=\"audioplayer\"><button id=\"playbutton-" + f + "\" class=\"play playbutton\"></button><div id=\"timeline-" + f + "\" class=\"timeline\"><div id=\"playhead-" + f + "\" class=\"playhead\"></div></div></div>"; 
     $("#audio-players").append(playerString); 
    } 
} 

Это то, как песни загружаются в html. Проблема: я не могу заставить ее работать более чем в 1 div.

Любые мысли ??

Если кто-либо знает более легкое решение этого вопроса, которое также будет оценено.

+0

файлов '= files.slice (5,9)' будет затирать файлы, и вы больше не будете иметь доступ к первым 5 элементов –

+0

'# аудио-players' является id, он должен быть уникальным, поэтому ожидается, что это не сработает с несколькими элементами, попробуйте вместо этого использовать класс. –

+0

эй ребята thansk за быстрые ответы! @Jaramandai просто дал фрагмент массива, который я использовал срез, чтобы попытаться получить плейлисты differnet из массива. – Allan

ответ

0

Есть две серьезные проблемы, как я уже сказал, использование идентификатора будет работать только с первым элементом. Еще одна важная проблема, что вы переопределяете глобальный список files с помощью функции slice. Это означает, что, вызвав сначала createAudioElments, он обновит массив files до нового с 5-го по 9-й элементы и, вызвав ту же функцию или createAudioPlayers, назначит пустой массив переменной files. Пожалуйста, см. Рабочий пример ниже и дайте мне знать, если у вас есть другие вопросы.

var files = new Array(9).fill(1); 
 

 
function createAudioElements() { 
 
    for (f in files.slice(5,9)) { 
 
      var audioString = "<audio id=\"audio-" + f + "\" class=\"audio\" preload=\"true\"><source src=\"audio/" + files[f] + "\"></audio>"; 
 

 
     $(".audio-players").append(audioString); 
 

 
    } 
 
} 
 

 

 
function createAudioPlayers() { 
 
    for (f in files.slice(5,9)) { 
 
     var playerString = "<div id=\"audioplayer-" + f + "\" class=\"audioplayer\"><button id=\"playbutton-" + f + "\" class=\"play playbutton\"></button><div id=\"timeline-" + f + "\" class=\"timeline\"><div id=\"playhead-" + f + "\" class=\"playhead\"></div></div></div>"; 
 
     $(".audio-players").append(playerString); 
 
    } 
 
} 
 

 
createAudioPlayers(); 
 
createAudioElements();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="audio-players"> 
 
    <span>First player</span> 
 
</div> 
 
<div class="audio-players"> 
 
    <span>Second player</span> 
 
</div>

+0

thats amazing! Спасибо, что нашли время, чтобы сделать это – Allan

+0

, но он все еще не работает над моим, хотя, я думаю, что может быть какой-то элемент в остальной части скрипта, который после изменения изменится с id на класс. – Allan

+0

<- бит JS новичок я должен признать: p – Allan