我已经声明了一个数组:
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 或 Edge 模式下运行 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" />
,它就可以工作了。
另请参阅
最佳答案
您的额外元素是由于额外的逗号造成的。删除结束 ]
之前的逗号,您的数组中将拥有正确数量的元素。
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' }
];
关于javascript - IE8枚举数组找到原型(prototype)的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20127373/