我已經聲明數組: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
成員不會出現(或在迭代數組時不出現)。
什麼是推薦的技術只迭代數組的成員?沒有我的許可,有沒有其他預期的事情可能出現在數組中?
獎金截圖:
完整的源:
<!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" />
,和它的作品。
也
- Stopping enumeration in JavaScript when using prototype
- Are trailing commas in arrays and objects part of the spec?
我似乎沒有得到那些結果... – qwertynl
你是如何得到數組的元素?如果您正在使用像employeeBanks [a]這樣的東西,我不會看到您可能訪問「原型」屬性。這不是數字。 –
@FelixKling我看不出如何。嘗試將您的IE瀏覽器放入IE8文檔模式。將失敗的jsFiddle樣本添加到接受的答案評論中。 –