JavaScript对象在IE中不起作用

时间:2014-01-18 04:35:49

标签: javascript jquery internet-explorer

以下代码适用于我尝试过但不适用于IE的所有浏览器。 jsonObj最终得到所有空值。 (浏览器测试过Mac safari,chrome,firefox,PC FireFox,Opera,chrome)IE是唯一一个失败的人。有人可以看到我的问题吗?

IE 10版

function Save() {
    var path = document.location.pathname;

    var Checked = "{";
    jsonObj = [];

    $('.questionsOnPage').each(function () {

        item = {}
        var id = this.id;

        jQuery(this).children(".questionCheckBox").each(function () {
            item ["id"] = this.id;
            item ["selected"] = this.checked;
        });

        jQuery(this).children(".question").each(function () {
            item ["question"] = this.innerHTML;
        });

        answers = {}

        jQuery(this).children(".answer").each(function () {
            answer = {};
            answer ["selector"] = $(this).attr("data-selector");
            answer ["answerText"] = $(this).attr("data-answerText");
            answer ["correct"] = $(this).attr("data-correct");
            answers [$(this).attr("data-selector")] = answer;
        });

        item["answers"] =  answers;

        jsonObj.push(item);
    });

1 个答案:

答案 0 :(得分:4)

正如Deryck所说,我会把它放在答案中。

问题的解决方案:在item = {}

之前添加 Var

不同的浏览器供应商在JavaScript引擎上有不同的实现。根据我的观察,当你在IE中将某些内容推入数组时,你正在推送对象的引用而不是克隆的副本(不确定这是否为真)。因此,在推送之后修改项目将导致更改先前推送的对象。添加var将确保您在每个迭代步骤中获得一个新副本。