Javascript 无法在IE中追加,可在Firefox和Chrome中使用

Javascript 无法在IE中追加,可在Firefox和Chrome中使用,javascript,jquery,html,internet-explorer,Javascript,Jquery,Html,Internet Explorer,我想我讨厌我。我在其他浏览器中所做的一切都能正常工作,但IE 11没有!它正在失败。我猜是我而不是浏览器 我的网页上有一个列表,我正在尝试动态绑定该列表 到目前为止,它在Firefox和Chrome中工作得很好,但在IE中没有。IE开发工具F12中没有错误,所以我不明白为什么它拒绝工作 HTML Javascript $(function() { var myItems=[]; myItems.push({"All":"Hello"}); myItems.push({"O

我想我讨厌我。我在其他浏览器中所做的一切都能正常工作,但IE 11没有!它正在失败。我猜是我而不是浏览器

我的网页上有一个列表,我正在尝试动态绑定该列表

到目前为止,它在Firefox和Chrome中工作得很好,但在IE中没有。IE开发工具F12中没有错误,所以我不明白为什么它拒绝工作

HTML

Javascript

$(function() {
    var myItems=[];
    myItems.push({"All":"Hello"});
    myItems.push({"One":"And More"});
    myItems.push({"Two":"Lots More"});   

    for (i = 0; i< myItems.length;i++)  {
        for (item in myItems[i]) {
            var x = myItems[i][item]; //for my testing
            var y = myItems[item];    //for my testing
            $("#MyList").append("<option>" + item + "</option>");
        }
    }
});
如果你用FF或Chrome试试小提琴,一切都好。“选择”列表将填充“全部”、“一个”和“两个”

如果没有给IE精灵的礼物,甚至是某种形式的牺牲,我需要做什么才能让IE和我一起快乐

试试这个

$(function() {
    var myItems=[];
    myItems.push({"All":"Hello"});
    myItems.push({"One":"And More"});
    myItems.push({"Two":"Lots More"});


    for (i = 0; i< myItems.length;i++)  {
        for (item in myItems[i]) {
            var x = myItems[i][item];
            $('#MyList')
             .append($("<option></option>")
             .attr("value",x)
             .text(item)); 
        }
    }
});

这很奇怪。当我在IE中运行这个fiddle时,我有一个方便的IE9,我得到一个拒绝访问的错误,jQuery没有被加载。如果我将fiddle更改为使用1.11.0而不是1.10.1,则不会出现该错误,脚本将运行

代码有几个问题,主要是您的代码遇到的未声明变量;这是一个关于:

变量声明 使用jquery1.11.0 使用no wrap-body选项而不是onload,因为您使用的是ready事件 代码如下:

$(function() {
    var myItems=[];
    myItems.push({"All":"Hello"});
    myItems.push({"One":"And More"});
    myItems.push({"Two":"Lots More"});

    var i, item;
    for (i = 0; i< myItems.length;i++)  {
        for (item in myItems[i]) {
            var x = myItems[i][item];
            var y = myItems[item];
            $("#MyList").append("<option>" + item + "</option>");
        }
    }
});

正如IE 10中@T.J.Crowder所提到的,jquery1.10.1不起作用,并将jquery版本更新到以后开始起作用

我想IE恨我-不,IE恨互联网及其发展+1:总是喜欢你清晰细致的解释奇怪的是,它实际上只在jQuery1.10.1上失败。。。我刚刚用JQuery 1.6.4、1.7.2、1.8.3、1.9.1和1.11.0进行了尝试-现在看看从1.10.1迁移到1.11.1后,我的站点还会有什么突破-谢谢you@MyDaftQuestions:我猜CDN JSFIDLE uses code.jquery.com存在一些问题,但我想不出一个问题只会影响IE!:-我将迁移到1.11.1。我不认为从1.9.1到1.11.1的变化是特别破坏性的。
$(function() {
    var myItems=[];
    myItems.push({"All":"Hello"});
    myItems.push({"One":"And More"});
    myItems.push({"Two":"Lots More"});

    var i, item;
    for (i = 0; i< myItems.length;i++)  {
        for (item in myItems[i]) {
            var x = myItems[i][item];
            var y = myItems[item];
            $("#MyList").append("<option>" + item + "</option>");
        }
    }
});
// Before the loop...
var options = $("#MyList")[0].options;

// ...in the loop
options.add(new Option(item));
var sel = $("#MyList");
sel.empty();                
for (var i = 0; i< myItems.length;i++)  {
    for (var item in myItems[i]) {
        var x = myItems[i][item];
        var y = item;
        console.log(x);
        console.log(y);            
        sel.append('<option value="' + x + '">' + y + '</option>');
    }
}