我试图自己解决这个问题,但是没有想法。
我有一个循环,它通过遍历数组来制作列表项。但是它似乎每次都执行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];
}