Javascript For循环并不总是在IE中工作
Javascript For loop doesn't always work in IE
经过两天的搜索,我被卡住了,真的需要一些帮助。
我有一个javascript数组,当迭代通过将给我每个后续数组的关键。这适用于所有浏览器,除了某些版本的IE。在某些版本的IE中,在返回键之前,它似乎首先以升序重新排序数组。Jquery的每个函数都做同样的事情。是否有一个等价的javascript for循环,不会重新排序数组,仍然适用于每个人?
var db = new Array();
db[259] = new Array(3);
db[259][0] = "John Smith";
db[259][1] = "Los Angeles";
db[259][2] = "Chicago";
db[917] = new Array(3);
db[917][0] = "Jane Smtih";
db[917][1] = "New York";
db[917][2] = "Tampa";
db[208] = new Array(3);
db[208][0] = "Jack Johnson";
db[208][1] = "Baltimore";
db[208][2] = "Milwaukee";
for(var i in db){document.write(i + " ");}
在大多数浏览器中,上面的代码将输出259 917 208。这就是我想要的结果。
在某些版本的IE中,上面将输出208 259 917。看起来键是按升序排列的。关键字在这里很重要,因为它是人的ID号,排名也很重要(例如,259应该在208之前)。其他函数引用db[i],其中i是人的ID #。
有人能帮忙吗?
在JavaScript for-in
循环中数组的迭代顺序不保证;然而,大多数JS实现自然地排序索引(当然,旧版本的IE除外)。
如果你提前知道索引,你应该将它们分开存储,以便显式迭代:
var idxs = [259, 917, 208], i;
for (i=0; i<idxs.length; i++) {
document.write(db[idxs[i]]);
}
For...in
在JavaScript中并不意味着数组,也不保证它是用于对象的顺序(数组恰好是这就是为什么它"工作")。使用合适的for
或while
环
参考:…
您可能想看看jQuery的each()函数
相关文章:
- Target=_blank don'我不在mozilla和IE工作
- jQUery Code没有'我不在IE工作
- 为什么这个书签脚本是't在IE工作
- 类构造函数super()没有'我不在IE工作
- onmousemove=null不会'我不在IE工作
- execCommand('另存为',true,'data.csv');不在IE工作
- 努力让第n个有悬停的孩子在IE工作
- Javascript Groovy按钮没有'我不在IE工作
- 属性='值'jquery选择没有'我不在IE工作
- atob不在IE工作
- 将图像附加到富文本编辑器dosen'我不在IE工作
- javascript没有'I don’我一直在IE工作
- 使用插件制作移动滑动导航,但它没有'我不在IE工作
- Video.js没有'我不在FF、IE工作
- dojo on.emit”;点击“;以及“;改变“;不在IE工作
- 为什么这个工具提示没有'不在IE工作吗?错误:应为对象
- document.getElementById('a').click()没有't在IE工作
- 插入符号插件的jquery;我不在IE工作
- 聚合物:点击事件在IE工作,但不是Chrome.如何修复
- 如何使IE工作预期与正则表达式提供的函数参数在拆分函数