Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态创建的选择元素在FF和Chrome中不同_Javascript_Google Chrome - Fatal编程技术网

Javascript 动态创建的选择元素在FF和Chrome中不同

Javascript 动态创建的选择元素在FF和Chrome中不同,javascript,google-chrome,Javascript,Google Chrome,在JavaScript选择元素中创建时,有一些奇怪之处: var items = {"3":"Three","1":"One","2":"Two"}; var elem = document.createElement("select"); for ( var key in items) { var ov = document.createElement("option"); ov.value = key; ov.appendChild(document.create

在JavaScript选择元素中创建时,有一些奇怪之处:

var items = {"3":"Three","1":"One","2":"Two"};
var elem = document.createElement("select");

for ( var key in items) {
    var ov = document.createElement("option");
    ov.value = key; 
    ov.appendChild(document.createTextNode(items[key]))
    elem.appendChild(ov);
}

document.getElementById('someDiv').appendChild(elem);
FF使用初始元素顺序(三、一、二)创建选择元素。 Chrome按键对元素进行排序,并以下一种方式输出(一、二、三)


为什么会这样?以及如何防止在Chrome中排序?

for…in语句以不可预测的顺序在对象上迭代。作为民主变革运动:

一个
for…in
循环在 对象中对象的属性 任意顺序(参见 更多关于为什么一个人不能依靠 迭代的表面有序性, 至少在跨浏览器设置中)

最好使用对象数组,并使用普通的
for
循环来保持指定的顺序,如:

var items = [{"3":"Three"}, {"1":"One"}, {"2":"Two"}];

for (var i = 0; i < items.length; i++}
    /* etc */ ;
var items=[{“3”:“三”}、{“1”:“一”}、{“2”:“两”}];
对于(var i=0;i

只是一个旁注:在
中为…使用
对对象进行迭代时,您确实应该使用来检查它是否为继承属性,否则您可能会在
选择
框中包含继承属性。

谢谢!问题可能出在var…in语句的非跨浏览器行为上