2011-08-26 2 views
1

나는 이것을 스스로 알아 내려고 노력했지만 아이디어가 없습니다... 추가 시간이 갈 것이지만 IE8에서만?

배열을 반복하여 목록 항목을 만드는 루프가 있습니다. 하지만 매번 EXTRA 루프를 수행하는 것으로 보이므로 정의되지 않은 요소를 가져옵니다. 예 : 내 배열은 앨범 [0]에서 멈추지 만 앞으로는 존재하지 않는 앨범 [1]을 위해 그것을 시도합니다. 이상하게 여긴다, 더 구체적으로 말하면, 필자의 필터 기능에서 텍스트를 가져온다.

어떻게 이런 일이 크롬에서 발생하지 않습니까? 이 배열을 통해 반복 할 때 for in를 사용하지 마십시오 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

for (노래가있는 상태의 객체)는 배열이 아닌 객체 (상태 아래의 답변)에서만 사용되어야합니다. JS의 for..in의 경우에 대한 좋은 설명입니다. http : //javascriptweblog.wordpress.com/2011/01/04/exploring-javascript-for-in-loops/ – scrappedcola

답변

3

일어나는 곳 이는 예측할 수의 ...입니다. 다음과 같이 대신 사용하십시오 :

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

일해 주셔서 고맙습니다. –

0

'foreach'루프를 사용하여 문제가 발생했습니다. 다음과 같이하십시오 :

관련 문제