A ordem da iteração difere no IE9
No IE9, as chaves numéricas das propriedades do objeto são classificadas e isso resulta em uma ordem diferente de iteração no IE9, em comparação com o IE8, onde a ordem é preservada à medida que é inserid
var obj = {
"5": "John",
"1": "Kumar",
"3": "Rajesh",
"2": "Yogesh"
}
for(var key in obj) alert(key)
Resultad
// 1,2,3,4 no IE9
// 5,1,3,2 no IE8, IE7
Existe uma maneira de desativar a classificação automática pelo IE9. Caso contrário, é possível, de alguma forma, fazer o navegador entender que as chaves devem ser identificadas como cadeias de caracteres em vez de número (mas sem anexar espaço, _ ou qualquer outro caractere especial)
Por favor sugira!
Aqui está o trecho de código de exemplo em que estou enfrentando esse problem
function Person(id, name) {
this.id = id;
this.name = name;
}
var persons = new Object();
var p1 = Person("5","John")
persons[5]=p1
var p2 = Person("1","Kumar")
persons[1]=p2
var p3 = Person("3","Rajesh")
persons[3]=p3
var p4 = Person("4","Yogesh")
persons[4]=p4
for(var id in personId){
var p = persons[id];
var option = new Option(p.name, p.id);
select.options[select.options.length] = option;
}
As opções selecionadas geradas por esse script foram classificadas de acordo com o ID no IE9, onde eu preciso da mesma ordem em que ele está inserid