Javascript 对象数组未显示所有变量
我的代码如下所示。 我的问题是:Javascript 对象数组未显示所有变量,javascript,arrays,local-storage,Javascript,Arrays,Local Storage,我的代码如下所示。 我的问题是:console.log(obj)部分说Object{InternalNumber=22},而忽略了所有其他变量。 我希望它会说: Object{Id=someID,ParameterId=“someParaId”,InternalNumber=someNr,value=“someValue”} 可能有什么问题 如果你没有注意到。。。我正在将对象保存到localStorage,然后从那里检索它 function getModel() { var model
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");
从你的控制台。第一个输出将是justwindow的长度1,第二个输出是空jQuery对象,第三个输出是未定义的
在空jQuery列表上调用.val()和.attr将是未定义的,因此不会序列化为JSON。InternalNumber已序列化,因为currentParcel.children正在提供匹配项。您需要修复$(this)选择器。Json stringify函数将排除具有未定义值的属性,因此首先检查缺少的属性是否具有值What do
localStorage.getItem(“model”)
和Json.stringify(model)
返回值?它们都返回“{”InternalNumber:“22”}这确实是答案。解决方案是(如您所述)通过id而不是$获取控件(此)