为了...在额外的时间,但只在IE8?

时间:2011-08-26 17:42:39

标签: javascript internet-explorer-8 jplayer

我已经尝试过自己解决这个问题但是没有想法。

我有一个循环只是通过循环数组来生成列表项。但它似乎每次都在做一个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);
    }
};

2 个答案:

答案 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
}