我想創建一個函數,獲取音頻文件的URL數組,然後爲每個音頻對象獲取其持續時間並將其添加到其相應的html元素。爲什麼這個循環改變每一輪的所有值
這裏是我的代碼:
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>
它想表明每首歌曲的持續時間,其右html元素。例如:row1 == musicArray [1]
編輯:這個問題是完全不同的可能重複的。即使解決它的代碼和方法也不同。
任何想法如何使它?
代碼會隨時更新'李#row1' - 因爲x是始終爲1 –
一旦你已經得到了'x'遞增,見[JavaScript的閉包內環路 - 簡單實用的例子](http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example) – JJJ
它不是一個封閉的問題 - $ .each提供了一個現成的封閉 –