2014-12-04 5 views
0

내 객체 변수에 연결할 수없는 것 같습니다. 아마 어딘가에서 실수를하고있을 것입니다. 객체의 나의 배열의 CONSOLE.LOG은 (pResult)는 다음과 같이, 첫 번째 개체를 확장하지만 그들은 모두 닮았 :json 객체의 속성에 액세스 할 수 없습니다.

[Object, Object, Object, Object, Object, Object, Object, Object, Object] 

0: Object 
depTime: "2014-12-04 18:35" 
destination: "Norsesund station" 
nr: "562" 
operator: "Västtrafik" 
typText: "Buss" 
__proto__: Object 
1: Object 
2: Object 
3: Object 
4: Object 
5: Object 
6: Object 
7: Object 
8: Object 
length: 9 
__proto__: Array[0] 

나는이 작업을 수행하려고 ...

for (var i = 0; i <= pResult.length; i++) { 
    var html = html + '<tr>'; 
    var html = html + '<td>'; 
    var html = html + pResult[i].depTime; 
    var html = html + '</td>'; 
    var html = html + '</tr>'; 
} 

...

Uncaught TypeError: Cannot read property 'depTime' of undefined 
+0

출력 결과에 따르면'pResult.depTime'이 정의되어 있지만'pResult [i] .depTime'은 정의되어 있지 않습니다. 내가 놓친 게 있니? – philtune

+0

JSON과 아무런 관련이 없습니다. 당신은 자바 스크립트 객체를 다루고 객체를 설명하는 텍스트 표현은 다루지 않습니다. (당신의 질문이 JSON 텍스트를 객체로 구문 분석했다면, [[json]'태그가 적절할 것입니다.) – apsillers

답변

3

변경 :

i <= pResult.length; 
하지만이 오류와 함께 때리게

에 :

i < pResult.length; 

는 길이 3이있는 경우, 당신은 단지 인덱스가 있으므로 배열은 0, 인덱스를 기반으로 0,1,2

+0

이것은 pResult [9] ... 9가 길이 인 pResult가 존재하지 않는 것을 보았습니다. – rfornal

+0

감사합니다. 그것이 가능한 한 빨리 받아 들일 것입니다. –

+0

@MattiasSvensson 문제가 없습니다. 행운을 빕니다. – juvian

0

이 시도 :

for (var i = 0; i < pResult.length; i++) { 
     var html = '<tr>'; 
      html += html + '<td>'; 
       html += html + pResult[i].depTime; 
      html += html + '</td>'; 
     html += html + '</tr>'; 
} 

문제는 당신이다 배열 길이 있지만, 배열까지 loopin하는 것은 배열 때문에
당신이있는 경우 0 인덱스에서 시작
var pResult= [object,object,object];
pResult.length =3
pResult[3]가 존재하지 않으므로 정의되지 않습니다.
참고 당신이 방금 예를 들어 기존 HTML + = "추가 텍스트"

1

대신 루프를 사용하여 추가 텍스트를 추가 할 때 변수를 다시 해달라고, 당신은 단순히 reduce를 사용할 수 있습니다

var html = pResult.reduce(function(previousValue, currentValue) { 
    return previousValue + '<tr><td>' + currentValue.depTime + '</td></tr>'; 
}, ''); 

이것은 IE   9 이상에서만 작동합니다 (하지만 다른 모든 최신 브라우저에서 작동 함). 따라서 이전 버전의 IE를 지원해야하는 경우 해당 메소드를 polyfill 할 수 있습니다.

관련 문제