2013-02-20 4 views
1

나는 PHP 파일에서 일부 자바 스크립트를 생성합니다. 이 생성 된 코드에서 다차원 배열을 만든 다음이를 채 웁니다. 첫 번째 중첩 배열은 문제없이 채워지지만 두 번째 배열은 TypeError를 발생시킵니다. myArray [idx]는 정의되지 않았습니다. 인덱스가 증가 된 직후,배열의 자바 배열 배열 -> 배열 [색인] 정의되지 않았습니다

function initialize() { 
       var arrayLabels = []; 
       var arrayMarkers = []; 
       var idx = 0; 
       arrayMarkers[idx] = []; 
       var mapLatlng = new google.maps.LatLng(40.6029248937, 7.7861327300); 
       var mapOptions = { center: mapLatlng, 
        zoom: 13, 
        mapTypeId: google.maps.MapTypeId.SATELLITE }; 
       var map = new google.maps.Map(document.getElementById("karte"), mapOptions); 
       var bounds = new google.maps.LatLngBounds(); 
        arrayMarkers[idx]['breite'] = 44.4114053473682; 
        arrayMarkers[idx]['laenge'] = 8.91858100891113; 
        arrayMarkers[idx]['farbe'] = "http://new.kfb.localhost:8888/img/ico/button2_gruen.png"; 
        arrayMarkers[idx]['hafen'] = "Ab/bis Genua"; 
        arrayMarkers[idx]['link'] = "Karte&#44; Wetter und<br>Landausfl&uuml;ge f&uuml;r<br><a href='hafen.php?hafen=172'>Genua</a><br>Sa, 16.03.13"; 
        idx++; 
        arrayMarkers[idx]['breite'] = 43.3449053146323; 

오류는 마지막 행에서 발생합니다 :

는 여기에 코드입니다. 문제는 무엇입니까? 모든 작업이 완료된 후 다음 인덱스로 이동 그래야

감사 MK

+0

어디에서 myArray입니까? – mplungjan

+0

또 다른'arrayMarkers [idx] = []; '를해야합니다. – RichardTowers

+0

@mplungjan 그 예입니다. 이 배열을 arrayMarkers라고합니다. – midnig

답변

5

같은 그 값을 초기화 할 수 있습니다 사용 :

arrayMarkers[idx]['breite'] = 43.3449053146323; 

당신은 arrayMarkers[idx]에 물건을 넣어 적이없는, 그래서 당신은 오류가 발생 undefined에 속성을 추가하려고 끝.

새 인덱스 배열을 만들려면 여기에 표시된 두 번째 줄을 추가

idx++; 
arrayMarkers[idx] = []; // <=== Add this 
arrayMarkers[idx]['breite'] = 43.3449053146323; 

사이드 참고 : arrayMarkers[idx]에두고있는 상황이 배열 ([])이다, 배열로 사용하지 않고 객체로 사용하고 있습니다. 당신 당신은 그들이 배열을하고있는 사실의 사용을 만들려고하지 않는 한 (그 배열 aren't really arrays at all이 있기 때문에)하지만, 난 그냥 객체를 사용하십시오 자바 스크립트에서 그렇게 :

arrayMarkers[idx] = {}; // Instead of [] 
0
idx++; 
        arrayMarkers[idx]['breite'] = 43.3449053146323; 

    arrayMarkers[idx]['breite'] = 43.3449053146323; 
idx++; 

해야한다. 그들이 그렇지 않으면

존재하지 않는 다음 인덱스 값을 증가 또는이 같은 상태를 유지해야하는 경우 다음 당신은 idx을 증가하고이 일을하고

idx++; 
arrayMarkers[idx] = []; 
arrayMarkers[idx]['breite'] = 43.3449053146323;