2013-11-21 3 views
1

에 대한 인덱스를 찾습니다IE8 열거 배열 내가 배열을 선언 한 프로토 타입

var employeeBanks = 
[ 
    { validFromDate: '2013-01-01', validToDate: '2013-12-31' }, 
    { validFromDate: '2013-01-01', validToDate: '2013-12-31' }, 
    { validFromDate: '2013-01-01', validToDate: '2013-12-31' }, 
    { validFromDate: '2013-02-01', validToDate: '2014-01-31' }, 
]; 

다음 배열의 모든 구성원 반복하려고 : 나는 오류가

for (var a = 0; a < employeeBanks.length; a++) 
{ 
    ... 
} 

을, 배열에 여분의 항목이 있기 때문에 :

employeeBanks 
    [0] = [object] 
    [1] = [object] 
    [2] = [object] 
    [3] = [object] 
    [prototype] = [object] 

그리고 배열의 다섯 번째 요소는 인식 할 수 없습니다. 그래서 나는 오류가 발생합니다. IE9, IE10 또는 에지 모드에서 IE11을 실행하면 prototype 구성원이 나타나지 않거나 배열을 반복 할 때 나타나지 않습니다.

어레이 구성원 만 반복하는 데 권장되는 기술은 무엇입니까? 허락없이 어레이에 나타날 수있는 다른 예상되는 것들이 있습니까?

보너스 스크린 샷 :

enter image description here

전체 소스 :

<!doctype html> 
<html> 
<head> 
<meta http-equiv="X-UA-Compatible" content="IE=8" /> 
<script type="text/javascript"> 
    var employeeBanks = 
     [ 
      { validFromDate: '2013-01-01', validToDate: '2013-12-31' }, 
      { validFromDate: '2013-01-01', validToDate: '2013-12-31' }, 
      { validFromDate: '2013-01-01', validToDate: '2013-12-31' }, 
      { validFromDate: '2013-02-01', validToDate: '2014-01-31' }, 
     ]; 
</script> 
<body> 
<p id="lblFoo"> 

<script type="text/javascript"> 
    for (var a = 0; a < employeeBanks.length; a++) 
    { 
     document.getElementById("lblFoo").innerText = "Test failed"; 
     document.getElementById("lblFoo").innerText = employeeBanks[a].validToDate; 
    } 
    document.getElementById("lblFoo").innerText = "Test complete"; 
</script> 
</body> 
</html> 

<meta http-equiv="X-UA-Compatible" content="IE=8" />를 제거하고, 그것을 작동합니다.

+0

나는 그 결과를 얻지 못하는 것 같습니다 ... – qwertynl

+0

어떻게 배열 요소를 얻었습니까? 당신이 employeeBanks [a]와 같은 것을 사용하고 있다면, 아마도 "prototype"속성에 접근 할 수 있을지 모르겠다. 그것은 숫자가 아닙니다. –

+0

@FelixKling 나는 어떻게 보이지 않는다. IE8 문서 모드로 IE를 넣어보십시오. 수락 된 답변 주석에 실패한 jsFiddle 샘플을 추가했습니다. –

답변

1

귀하의 추가 요소가 추가 쉼표 때문입니다 참조하십시오. 닫는 ] 전에 쉼표를 제거하면 배열에 올바른 수의 요소가 나타납니다.

var employeeBanks = 
[ 
    { validFromDate: '2013-01-01', validToDate: '2013-12-31' }, 
    { validFromDate: '2013-01-01', validToDate: '2013-12-31' }, 
    { validFromDate: '2013-01-01', validToDate: '2013-12-31' }, 
    { validFromDate: '2013-02-01', validToDate: '2014-01-31' } 
]; 
+0

여분의 쉼표가 "prototype"속성 이름을 가진 요소를 추가하는 이유는 무엇입니까? –

+0

내 생각 엔 이상한 점은 문제를 디버깅하는 데 사용 된 코드 때문이라고 생각합니다. 근본 원인은 여전히 ​​후행 쉼표입니다. – Tibos

+0

글쎄 내가 저주받을거야. 누가 그것을 생각 했 겠어. [jsFiddle] (http://jsfiddle.net/esAU4/). 그리고 누가 stackoverflow에 대한 사람들이 최소한 먼저 테스트하지 않고 정답을 줄여 줄 것이라고 생각했을 것입니다. –