【问题标题】:javascript 'object object' from localstorage来自本地存储的 javascript 'object object'
【发布时间】:2017-01-02 19:56:37
【问题描述】:

当我执行showlogsf 函数时,我收到一条警告说[object] object

 var fdata = {fidval, fweightval, feggslaidval, fgraineatenval, fwaterval};
 var fidval = document.getElementById('#fid');
 var fweightval = document.getElementById('#fweight');
 var feggslaidval = document.getElementById('#feggslaid');
 var fgraineatenval = document.getElementById('#fgraineaten');
 var fwaterval = document.getElementById('#fwater');

这是可以通过按钮点击触发的两个功能

$('#submitf').click(function (){
  localStorage.setItem ("fdatak", JSON.stringify(fdata));
});

$('#showlogsf').click(function(){
  var fdataload = JSON.parse(localStorage.getItem("fdatak"));
  alert(fdataload);
 });

});

【问题讨论】:

  • 试试console.table / log / dir ?
  • alert(JSON.stringify(fdataload))
  • 我想输出从用户输入中保存的值(我保存为 fidval、fweightval、feggslaidval、fgraineatenval、fwaterval)
  • 你不需要将#getElementById函数一起使用,它应该是document.getElementById('fid')而不是document.getElementById('#fid')
  • 所显示的代码存在(至少)三个问题:(1)您正在警告一个对象,因此您获得了该对象的默认.toString() 表示,即"[object] Object"。 (2) 你创建fdata 之前 为其他变量赋值,所以fdata 的所有属性都将具有undefined 的值。一旦通过将该行移到末尾来解决此问题,您就会发现问题 (3) 您正在尝试保存 DOM 元素本身,而您真正想要的是它们的值。

标签: javascript jquery html arrays json


【解决方案1】:

您正在推送一个对象作为警报。 HTML 将其显示为 [object Object]。你必须解决这个对象的实际属性,所以:

$('#showlogsf').click(function(){
    var fdataload = JSON.parse(localStorage.getItem("fdatak"));
    alert(fdataload.fidval);
    alert(fdataload.fweightval);
    alert(fdataload.feggslaidval);
    // etc etc...
});

编辑:似乎您也在保存文档元素,而不是值。我假设 fdataload.properties 是实际值,您应该获取原始 HTML 数据或输入值而不是 HTML 元素本身

【讨论】:

  • 仍然为每个弹出窗口提供“未定义”
  • 嗨,如果我想将这些保存的数据插入到 div 中怎么办?因为我放 alert 只是为了测试它是否正在保存
  • 如果要保存元素,必须将其转换为字符串:stackoverflow.com/questions/15866583/…
【解决方案2】:

我猜你的fdata 是一个数组,对吧?

试试这个var fdata = [fidval, fweightval, feggslaidval, fgraineatenval, fwaterval];

【讨论】:

    【解决方案3】:

    我将数组的值编辑为 xxx.value 而不是 xxx

    var fdata =  new Array();   
    
    $('#submitf').click(function (){
    
    var fidval = document.getElementById('fid');
    var fweightval = document.getElementById('fweight');
    var feggslaidval = document.getElementById('feggslaid');
    var fgraineatenval = document.getElementById('fgraineaten');
    var fwaterval = document.getElementById('fwater'); 
    
    var fdata =  [];
    

    喜欢这个

    fdata.push (fidval.value, fweightval.value, feggslaidval.value, fgraineatenval.value, fwaterval.value);
    
    
    
    
    localStorage.setItem ("fdata", JSON.stringify(fdata));
    
    
    });
    
    
    
    $('#showlogsf').click(function(){
    
    
    
    
    var fdataload = JSON.parse(localStorage.getItem('fdata'));
      document.getElementById("flogview").innerHTML = fdataload;
    
    });
    

    现在它保存了,但我还有一个问题,为什么每次点击 showlogsf 按钮都会替换数据??

    【讨论】:

      猜你喜欢
      • 2021-09-07
      • 2015-06-21
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      相关资源
      最近更新 更多