2013-07-28 3 views
1

"matched_array_pics.length"를 참조하여 "정의되지 않은 null 속성 또는 null 참조를 가져올 수 없습니다."라는 메시지와 함께이 스크립트가 임의로 충돌합니다. 복제 할 경우 #train div에 동일한 이미지를 두 번 추가합니다. var j = $(".pics").index(this); 나는이 다음과 같이 다시 작성해야한다고 생각 :다차원 배열 및 루프 관련 문제

$(document).ready(function() { 

    var starting_pics = ["AN.gif", "CN.gif", "EN.gif", "GN.gif"]; 

    var an_array_pics = ["CN.gif", "EN.gif", "GN.gif", "AN.gif"]; 
    var cn_array_pics = ["EN.gif", "GN.gif", "AN.gif", "CN.gif"]; 
    var en_array_pics = ["GN.gif", "AN.gif", "CN.gif", "EN.gif"]; 
    var gn_array_pics = ["AN.gif", "CN.gif", "EN.gif", "GN.gif"]; 

    var grand_array_pics = [an_array_pics, cn_array_pics, en_array_pics, gn_array_pics]; 

    var i = 0; 

    for (i = 0; i < starting_pics.length; i++) { 
     $("<img/>").attr("src", "images/" + starting_pics[i]).load(function() { 
      $(this).appendTo("#main"); 
      $(this).addClass("pics"); 
     }); 
    } 


    $("#main").on("click", ".pics", function() { 

     var j = $(".pics").index(this); // gets the index for the matched_array_pics... 
      console.log(j); 

     $("#sidebar .pics").remove(); 
     $(this).clone().appendTo("#train"); 
     $(this).clone().appendTo("#sidebar"); 
     $("#main .pics").remove(); 

     var matched_array_pics = grand_array_pics[j]; // ... in grand_array_pics. 

     var k = 0; 

     for (k = 0; k < matched_array_pics.length; k++) { 
      $("<img/>").attr("src", "images/" + matched_array_pics[k]).load(function() { 
       $(this).appendTo("#main"); 
       $(this).addClass("pics"); 
      }); 
     } 
    }); 
});  //end ready 
+0

오류가 발생한 줄은 무엇입니까? [피들] (http://jsfiddle.net)을 제공하는 등 코드 테스트를 위해 최선을 다하십시오. – FakeRainBrigand

답변

0

나는 문제는이 라인에 생각 var j = $(this).index(); 당신이 j이 끝나는 것을보고 바로 문제가되는 줄 끝에서 console.log(j);을 추가 할 수 있다면 도움이 될 것 존재. 이 줄이 실행될 때 var matched_array_pics = grand_array_pics[j]; 은 코드 실행시 숫자가 아니기 때문에 undefined이 발생한다고 생각합니다.

+0

하지만 그의 구문이 정확하다고 생각합니다. [docs] (http://api.jquery.com/index/)에서는 index()를 사용하여 일치하는 요소 집합을 검색 할 수 있다고 말합니다. –

+0

.index()에 대한 인수로 전달하는 것은 (this)의 인덱스를 얻는 것과 같습니다. 이 질문을보십시오 : http://stackoverflow.com/questions/17634846/jquery-index-of-element-of-a-certain-class – frenchie

+0

나는'$ (this) .index() '를 사용하여 형제와의 관계에서 인덱스를 얻지 만'$ ('. pics') .index (this)'를 사용하면 일치하는 객체 세트와 관련하여 인덱스를 가져와야하므로이 경우 두 메소드가 서로 다른 값을 반환하는 방법을 설명 할 수 있습니다 값은'$ ('. pics')와 같이 보이는데,'# main'의 모든 자식을 가리킬 것입니다. –