2016-04-15 2 views
-2

У меня есть веб-сайт, который загружает песни, чтобы пользователь мог их воспроизвести. Этот метод «loadSongs()» в основном берет все песни из ввода файла и называется «onchange» ввода файла. Я просто не могу заставить имена файлов вставляться в мой строковый массив: «песни». Был бы признателен за любую помощь, вот мой код:Javascript String Array: метод Push не работает

function loadSongs() {

var x = document.getElementById("file"); 
var songs = new Array(); 

if (x.files.length != 0) { 

    for (var i = 0; i < x.files.length; i++) { 

     var file = x.files[i]; 
     songs.push(file.name); 

    } 

} 

for (var j = 0; j < songs.length; j++) { 

    alert("song #" + i + ": " + songs[i]); 

} 

}

Я могу успешно получить доступ к все файлы в первый цикл, потому что, когда я сделал «предупреждение (file.name)» в первом для цикла, он работал нормально. К сожалению, я просто не могу получить их в массив строк.

+3

Это должно быть 'alert (" song # "+ j +": "+ songs [j]);', а не 'i' во втором цикле. –

+3

И прежде чем задавать такие вопросы, вы должны использовать браузер [отладка] (https://developer.chrome.com/devtools/docs/javascript-debugging). –

+0

@Jacob Вы должны ответить на комментарии и ответы, чтобы мы знали, был ли ответ на ваш вопрос. –

ответ

0

Проблема не в методе push, это ваши параметры alert.

Во втором цикле:

for (var j = 0; j < songs.length; j++) { 

    alert("song #" + i + ": " + songs[i]); 

} 

Вы "song #" + i + ": " + songs[i], но ваш цикл использует j в качестве переменной счетчика. Просто измените i на j.

for (var j = 0; j < songs.length; j++) { 

    alert("song #" + j + ": " + songs[j]); 

} 
+0

Спасибо за помощь! Извините за бессмысленный вопрос. : P – Jacob

+0

Это нормально, просто обязательно возьмите совет Тимура и используйте отладку браузера, чтобы убедиться, что проблема не является чем-то тривиальным. –

Смежные вопросы