我已经尝试过自己解决这个问题但是没有想法。
我有一个循环只是通过循环数组来生成列表项。但它似乎每次都在做一个EXTRA循环,因此拉出一个未定义的元素。例如我的数组在专辑[0]停止,但它继续前进并尝试为不存在的专辑[1]执行此操作。奇怪的是,更具体地说,它最终从我的过滤函数中拉出文本??
为什么铬不会发生这种情况? 这是它在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);
}
};
答案 0 :(得分:3)
在循环数组时永远不要使用for in
......这是不可预测的。请改用:
for (var i = 0; i < albums.length; i++) {
var obj = albums[i];
}
答案 1 :(得分:0)
您正在使用“foreach”循环,这会导致问题。这样做:
for (var i = 0; i < albums.length; i++)
{
// your code
}