我试图自己解决这个问题,但是没有想法。

我有一个循环,它通过遍历数组来制作列表项。但是它似乎每次都执行EXTRA循环,因此提取了一个未定义的元素。例如我的数组停在albums [0],但继续进行,并尝试对不存在的Albums [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);
    }
};

最佳答案

遍历数组时切勿使用for in ...这是不可预测的。使用此代替:

for (var i = 0; i < albums.length; i++) {
    var obj = albums[i];
}

10-06 02:27