javascript - 对象数组未显示所有变量

标签 javascript arrays local-storage

我有如下所示的代码。 我的问题是:console.log(obj) 部分表示 Object {InternalNumber = 22 } 并忽略了所有其他变量。 我期待它说:

对象 { Id = someID, ParameterId="someParaId", InternalNumber = someNr, value="someValue"}

可能出了什么问题?

如果您没有注意到...我正在将对象保存到 localStorage,然后从那里检索它。

function getModel() {

    var model = {
        Id: '',
        ParameterId: '',
        InternalNumber: '',
        Value: ''
    }

    return model;
}

function saveObjectToLocal() {
    model = getModel();

    model.Id = $(this).find(':input[name$=Id]').val();
    model.ParameterId = $(this).attr('id');
    model.InternalNumber = currentParcel.children('#viewModel_InternalNumber').val();
    model.Value = $(this).find(':input[name$=Value]').val();

    localStorage.setItem("model", JSON.stringify(model));        
}

function getObjectFromLocalAndInsertInFields() {
    obj = JSON.parse(localStorage.getItem("model"));
    console.log(obj);
}

最佳答案

你如何调用saveObjectToLocal函数。该函数内部的 $(this) 可能不匹配任何内容,因为“this”可能是全局(窗口)对象,并且 DOM 元素在窗口对象内不匹配。

看看我在说什么。运行:

$(this);
$(this).find("input");
$(this).find("input").attr("id");

从你的控制台。第一个输出将是窗口的长度 1,第二个输出将是一个空的 jQuery 对象,第三个输出将是未定义的。

在空 jQuery 列表上调用 .val() 和 .attr 将是未定义的,因此不会序列化为 JSON。 InternalNumber 被序列化,因为 currentParcel.children 给出了匹配项。您需要修复 $(this) 选择器。

关于javascript - 对象数组未显示所有变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26123114/

相关文章:

c - 用随机数填充数组并打印到屏幕

c - 复杂数组的指针数学

iphone - 从 native iPhone 应用程序访问 UIWebView 本地存储数据

javascript - 在可编辑模式下添加新的 Div

javascript - 除非手动触发一次,否则 HTML5 音频无法通过 Javascript 播放

Python - 如何加速 for 循环从另一个 numpy 数组计算创建一个 numpy 数组

javascript - Chrome 扩展商店

reactjs - 如何将localStorage与apollo-client和reactjs一起使用?

javascript - 如何使用 javascript 或 jquery 将日期转换为 JSON 格式?

javascript - 在 mailto : string not working as expected 中使用 es6 模板文字