Javascript &引用;无法读取属性';选项';“未定义”的定义;尝试更新datagrid时易用性

Javascript &引用;无法读取属性';选项';“未定义”的定义;尝试更新datagrid时易用性,javascript,jquery,datagrid,local-storage,jquery-easyui,Javascript,Jquery,Datagrid,Local Storage,Jquery Easyui,在页面加载时,我想从本地存储加载JSON,以便能够更新交互式“购物车”。当用户退出页面并返回时,我希望项目仍然存在 在交互式购物车操作结束时,我将数据保存到本地存储器: localStorage.setItem("datastr", JSON.stringify(data)); 这很好,因为当我加载页面时,我会检查本地存储中是否有数据,并记录其详细信息 if (localStorage.getItem("datastr") !== null) { console.log("data f

在页面加载时,我想从本地存储加载JSON,以便能够更新交互式“购物车”。当用户退出页面并返回时,我希望项目仍然存在

在交互式购物车操作结束时,我将数据保存到本地存储器:

localStorage.setItem("datastr", JSON.stringify(data));
这很好,因为当我加载页面时,我会检查本地存储中是否有数据,并记录其详细信息

if (localStorage.getItem("datastr") !== null) {
    console.log("data found");
然后,我将这些项添加到数组中:

data.rows.push({
            name:loadedarray.name,
            quantity:loadedarray.quantity,
            price:loadedarray.price
        });
但是当我尝试用这些项目更新datagrid时

$('#cartcontent').datagrid('loadData',loadedarray);
它给了我以下错误:

"Cannot read property 'options' of undefined"
我假设这个错误意味着它试图读取一些不存在的东西,但我不确定哪里出了问题


如果这有帮助的话。

这里是我用您提供的数据构建的工作测试。希望您可以通过比较您的代码和我的代码来发现您的问题

function setLocalStorage() {
  var data = [];
  data.push({name: "foo", quantity: 10, price: 4.99});
  data.push({name: "bar", quantity: 4, price: 9.99});
  localStorage.setItem("datastr", JSON.stringify(data));
}

function getLocalStorage() {
  if (localStorage.getItem("datastr") !== null) {
    var loadedarray = JSON.parse(localStorage.getItem("datastr"));
    var data = [];
    data.rows = [];
    for (var i = 0; i < loadedarray.length; i++) {
      var curr = loadedarray[i];
      data.rows.push({
        name: curr.name,
        quantity: curr.quantity,
        price: curr.price
      });
    }
    for (var j = 0; j < data.rows.length; j++) {
      var curr = data.rows[j];
      console.log("row " + j + ": " + curr.name + " " + curr.quantity + " $" + curr.price);
    }
  }
}
函数setLocalStorage(){
var数据=[];
数据推送({名称:“foo”,数量:10,价格:4.99});
数据推送({名称:“条”,数量:4,价格:9.99});
setItem(“datastr”,JSON.stringify(data));
}
函数getLocalStorage(){
if(localStorage.getItem(“datastr”)!==null){
var loadedaray=JSON.parse(localStorage.getItem(“datastr”);
var数据=[];
data.rows=[];
对于(变量i=0;i
对不起,我昨天写问题时漏掉了一点<代码>$(“#cartcontent”).datagrid('loadData',loadedarray)是给我带来问题的那一行。datagrid是JQuery EasyUI的一个函数。我不知道你是否了解它。我还将整个JS代码添加到了PasteBin中的OP中。我想这可能是操作顺序让你感到悲伤。在初始化datagrid之后,尝试将此方法“if(localStorage.getItem(“datastr”)!==null{”及其内容移动到“$”(“#cartcontent”).datagrid({singleSelect:true}”);@davidpox对方法进行重新排序是否成功?我和导师谈过,他设法修复了它。第1点,I$(function(){});和$(document).ready(function({});是相同的函数,所以他将它们融合在一起。而且,他将解析后的JSON存储在数据数组中