I am trying to create a function that gets an array of urls of audio files, then for each audio object it gets its duration and add it to its corresponding html element.
Here is my code:
var audio, musicArray;
musicArray = [
"https://dl.dropboxusercontent.com/u/33538012/music/music1.mp3", "https://dl.dropboxusercontent.com/u/33538012/music/music2.mp3", "https://dl.dropboxusercontent.com/u/33538012/music/music3.mp3", "https://dl.dropboxusercontent.com/u/33538012/music/music4.mp3", "https://dl.dropboxusercontent.com/u/33538012/music/music5.mp3", "https://dl.dropboxusercontent.com/u/33538012/music/music6.mp3", "https://dl.dropboxusercontent.com/u/33538012/music/music7.mp3", "https://dl.dropboxusercontent.com/u/33538012/music/music8.mp3"
];
audio = new Audio();
addDuration(musicArray);
function addDuration(array) {
var x = 1;
$.each(array, function() {
audio.src = array[x];
$(audio).on("loadedmetadata", function() { //front
$("li#row" + x).html(audio.duration);
});
});
}
HTML:
<ul>
<li class="row1"></li>
<li class="row2"></li>
<li class="row3"></li>
<li class="row4"></li>
<li class="row5"></li>
<li class="row6"></li>
<li class="row7"></li>
<li class="row8"></li>
<li class="row9"></li>
</ul>
It suppose to show the duration of each song in its right html element. e.g: row1 == musicArray [1]
Edit: this question is entirely different than the possible duplicate ones. even the code and approaches to solve it are different.
Any idea how to make it?