1

私は自分でこれを理解しようとしましたが、アイデアがありません。

配列をループしてリスト項目を作成するだけのループがあります。しかし、毎回 EXTRA ループを実行しているように見えるため、未定義の要素を引き出します。たとえば、私の配列は Albums[0] で停止しますが、先に進み、存在しない Albums[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);
    }
};
4

2 に答える 2

3

配列をループするときは絶対に使用しないfor inでください...予測できません。代わりにこれを使用してください:

for (var i = 0; i < albums.length; i++) {
    var obj = albums[i];
}
于 2011-08-26T17:44:41.093 に答える
0

問題の原因となっている「foreach」ループを使用しています。代わりにこれを行います:

for (var i = 0; i < albums.length; i++)
{
    // your code
}
于 2011-08-26T17:45:02.830 に答える