Hallo!
Ich habe soeben ein extrem seltsames Phänomen mit assoziativen Arrays unter Opera (Version 7.11) festgestellt.
Ich Deklariere den Array wie folgt:
var menuItems = new Array();
menuItems['item1'] = new menuItem(1,1,0,'test1','#','_top',1);
menuItems['item2'] = new menuItem(2,1,0,'test2','#','_top',1);
menuItems['item3'] = new menuItem(3,1,2,'test3','#','_top',1);
menuItems['item4'] = new menuItem(4,1,0,'test4','#','_top',1);
menuItems['item5'] = new menuItem(5,1,0,'test5','#','_top',1);
menuItems['item6'] = new menuItem(6,2,0,'test6','#','_top',1);
menuItems['item7'] = new menuItem(7,2,0,'test7','#','_top',1);
menuItems['item8'] = new menuItem(8,2,0,'test8','#','_top',1);
menuItems['item9'] = new menuItem(9,2,3,'test9','#','_top',1);
menuItems['item10'] = new menuItem(10,2,0,'test10','#','_top',1);
menuItems['item11'] = new menuItem(11,3,0,'test11','#','_top',1);
menuItems['item12'] = new menuItem(12,3,0,'test12','#','_top',1);
Anmerkung: "menuItem" ist ein selbstdefiniertes Objekt und meiner Meinung nach für mein problem unerheblich.
Weiter unten im Script habe ich eine Testfunktion geschrieben, die diesen assoziativen Array verarbeite:
function showItemTree(){
var treeOut = "";
for(var mi in menuItems){
treeOut = treeOut + "->" + mi;
}
alert(treeOut);
}
Rufe ich nun showItemTree() auf, erhalte ich in allen anderen Browsern das korrekte Ergebniss, nämlich den String:
"->item1->item2->item3->item4->item5->item6->item7->item8->item9->item10->item11->item12"
Aber unter Opera erhalte ich:
"->item1->item2->item3->item4->item9->item10->item11->item12->item5->item6->item7->item8"
?!?
Hat da jemand eine Erklärung dafür ?
Ich habe mir zwar schon was ausgedacht, wie ich das Problem umgehen kann, aber das ist doch recht aufwendig und daher würde mich mal interessieren, ob da jemandem was zu einfaällt und vor allem, wieso Opera sich da so seltsam verhält.
Grüße,
Thomas