Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在刷新应用程序后检索对象的元素?_Javascript_Jquery - Fatal编程技术网

Javascript 如何在刷新应用程序后检索对象的元素?

Javascript 如何在刷新应用程序后检索对象的元素?,javascript,jquery,Javascript,Jquery,我有一张表格 <input type="text" id='name'> <input type="text" id='place'> <button id='add'>Add</button> <button id='show'>Show</button> 刷新应用程序时,首先在“添加”按钮中未执行任何操作时显示对象的元素: { 'foo': { 'name':'foo', 'place': 'foo1'

我有一张表格

<input type="text" id='name'>
<input type="text" id='place'>
<button id='add'>Add</button>        
<button id='show'>Show</button>
刷新应用程序时,首先在“添加”按钮中未执行任何操作时显示对象的元素:

{ 'foo': { 'name':'foo', 'place': 'foo1' } }
但是当我填写表单并触发Add按钮时,对象中的旧元素被删除,新元素被添加到对象中。这仅在刷新应用程序时发生

因此,我的问题是如何在刷新应用程序时检索对象的元素,并且在添加元素时,它应该与旧元素一起添加:

{
  'foo': {
    'name': 'foo',
    'place': 'foo1'
   },
   'goo': {
     'name': 'goo',
     'place': 'goo1'
   }
}

每当执行click方法时,您都在创建一个新对象

measurecol = new Object();
它删除/替换上一个对象。因此,您丢失了以前存储的数据

如果在变量名之前不使用var,它将创建一个全局变量。因此,您只有一个measurecol变量,它每次都会获得一个新值。
加上这个

var measurecol = new Object();
使用


我想它会起作用的。首先,你可以检查对象是否为空。如果为空,则在对象中添加元素;如果为非空,则根据对象的长度追加元素

if(measure != undefined && measure !={}){
    measure[measure.length] = measurecol;
}else{
    measure[measure.length+1] = measurecol;
}

希望它能帮助您使用
localStorage

var measure = {};
$("#add").click(function(){
    measurecol = new Object();
    measurecol.name = $("#name").val();
    measurecol.place = $("#place").val();
    measure[measurecol.name] = measurecol;
    var lastobject =  localStorage.getItem("lastobj");

    if(lastobject){
        lastobject = JSON.parse(lastobject);
        var l = Object.keys(lastobject).length
        lastobject['obj'+l]=measurecol;
    }else{
        lastobject = new Object();
        lastobject.obj0 = measurecol;
    }
    localStorage.setItem("lastobj", JSON.stringify(lastobject));
});

第…号的可能副本与我的不同。当重新加载应用程序时,我可以在object中获取旧元素,但当我触发add按钮时,新元素是通过删除旧元素来添加的。您知道
measure!={}
将始终返回
true
,因为将它与新的空对象literal进行比较第一次它将为空,并且当添加元素时,度量值将不会为空,因此条件将得到满足
if(measure != undefined && measure !={}){
    measure[measure.length] = measurecol;
}else{
    measure[measure.length+1] = measurecol;
}
var measure = {};
$("#add").click(function(){
    measurecol = new Object();
    measurecol.name = $("#name").val();
    measurecol.place = $("#place").val();
    measure[measurecol.name] = measurecol;
    var lastobject =  localStorage.getItem("lastobj");

    if(lastobject){
        lastobject = JSON.parse(lastobject);
        var l = Object.keys(lastobject).length
        lastobject['obj'+l]=measurecol;
    }else{
        lastobject = new Object();
        lastobject.obj0 = measurecol;
    }
    localStorage.setItem("lastobj", JSON.stringify(lastobject));
});