对象数组未显示所有变量

object array not showing all variables

本文关键字:变量 显示 数组 对象      更新时间:2023-09-26

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

Object { 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");

从您的控制台。第一个输出的长度仅为window的1,第二个输出为空jQuery对象,第三个输出未定义。

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

Json字符串函数将排除具有未定义值的属性,因此请首先检查缺少的属性是否具有值