2013-11-21 75 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] 

而數組中的第5個元素是沒有任何可識別的。所以我得到一個錯誤。在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]這樣的東西,我不會看到您可能訪問「原型」屬性。這不是數字。 –

+0

@FelixKling我看不出如何。嘗試將您的IE瀏覽器放入IE8文檔模式。將失敗的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的人會在沒有最低限度測試的情況下降低正確答案。 –