для .. в дополнительное время, но только в IE8? - PullRequest
1 голос
/ 26 августа 2011

Я пытался понять это самостоятельно, но у меня нет идей.

У меня есть цикл, который просто создает элементы списка, просматривая массив. Но, кажется, каждый раз делает цикл EXTRA, поэтому тянет неопределенный элемент. например мой массив останавливается на альбомах [0], но он продолжает и пытается сделать это для альбомов [1], которых не существует. возникает странность, точнее говоря, это приводит к извлечению текста из моей функции фильтра ??

почему этого не происходит в Chrome? это где это происходит в ie8 http://dl.dropbox.com/u/1261672/groovyBox2222/guts/artists.html?Hackers-vs-Slackers&

 getPlaylist(function(songs) // pulls out songs matching artist
 {

    var albums = new Array();
    for (obj in songs){
        if (songs[obj]["artist"] == artist){
            albums.push(songs[obj]["album"]);
        }

        albums = removeDuplicateElement(albums);
    }
    var albumname;
    for (x in albums){ // creates LI of albums
        albumname = '<li><a href="albums.html?'+escape(albums[x])+
           '&'+escape(artist)+'">'+albums[x]+"</a></li>";
        $('#albumlist').append(albumname);
    }
};

Ответы [ 2 ]

3 голосов
/ 26 августа 2011

Никогда не используйте for in при цикле по массиву ... это непредсказуемо.Используйте это вместо:

for (var i = 0; i < albums.length; i++) {
    var obj = albums[i];
}
0 голосов
/ 26 августа 2011

Вы используете цикл 'foreach', который вызывает проблему.Сделайте это вместо:

for (var i = 0; i < albums.length; i++)
{
    // your code
}
...