【问题标题】:How can I put JSON data into a jQuery/Javascript array for later use?如何将 JSON 数据放入 jQuery/Javascript 数组以供以后使用?
【发布时间】:2015-01-06 19:58:46
【问题描述】:

我有一些这样的代码:

var data = // coming in from AJAX and confirmed working, don't need to wory about this...

var row = // cloning an existing HTML structure in the DOM

for (i = 0; i < data.length; i++) {
    var rowclone = row.clone();
    var orderLastChangedTime = new Date(data[i].createDate);
    var diffDays = Math.round(Math.abs((currentTime.getTime() - orderLastChangedTime.getTime())/(oneDay)));
    rowclone.find(".home-order-calc").text(diffDays);
    rowclone.find(".home-order-status").text(data[i].status);
    rowclone.find(".home-order-po-number").text(data[i].poNumber);
    rowclone.find(".home-order-number").text(data[i].orderId);
    rowclone.find(".home-order-last-changed").text(orderLastChangedTime);
    rowclone.find(".home-order-lines").text(data[i].itemsCount);
    rowclone.find(".home-order-cost").text(data[i].cost);
    var rowstatus = rowclone.find(".home-order-status").text();
    rowstatus = rowstatus.toUpperCase();
    openJSONitems = [];
    closedJSONitems = [];
    otherJSONitems = [];
    if (status[rowstatus] == "open") {
        openJSONitems.push(rowclone);
    }
    else if (status[rowstatus] == "closed") {
        closedJSONitems.push(rowclone);
    }
    else {
        otherJSONitems.push(rowclone);
    }
    console.log(openJSONitems);
    openJSONitems.appendTo("#home-table-orders");
}

我正在尝试创建 3 个新的 JavaScript 数组,并根据来自 JSON 有效负载的排序标准将数据推送到其中。一旦它们被排序,我想保留它们并将它们附加到 DOM 上的一些用户操作......我做错了什么?

【问题讨论】:

  • openJSONitems 是一个数组,它没有 appendTo 方法,您必须遍历该数组并将其元素附加到“#home-table-orders”。此外,您正在每次迭代中创建一个新数组。

标签: javascript jquery arrays json dom


【解决方案1】:

openJSONitems 是一个数组,它没有appendTo 方法,您必须遍历该数组并将其元素附加到“#home-table-orders”。此外,您将在每次迭代中创建一个新数组。我认为这些更改将解决问题。如果你愿意,你也可以避免在status[rowstatus] == "open" 时直接插入元素的最后一个循环。

var openJSONitems = [],
closedJSONitems = [],
otherJSONitems = [];    
var data = // coming in from AJAX and confirmed working, don't need to wory about this...

var row = // cloning an existing HTML structure in the DOM

for (i = 0; i < data.length; i++) {
    var rowclone = row.clone();
    var orderLastChangedTime = new Date(data[i].createDate);
    var diffDays = Math.round(Math.abs((currentTime.getTime() - orderLastChangedTime.getTime())/(oneDay)));
    rowclone.find(".home-order-calc").text(diffDays);
    rowclone.find(".home-order-status").text(data[i].status);
    rowclone.find(".home-order-po-number").text(data[i].poNumber);
    rowclone.find(".home-order-number").text(data[i].orderId);
    rowclone.find(".home-order-last-changed").text(orderLastChangedTime);
    rowclone.find(".home-order-lines").text(data[i].itemsCount);
    rowclone.find(".home-order-cost").text(data[i].cost);
    var rowstatus = rowclone.find(".home-order-status").text();
    rowstatus = rowstatus.toUpperCase();

    if (status[rowstatus] == "open") {
        openJSONitems.push(rowclone);
    }
    else if (status[rowstatus] == "closed") {
        closedJSONitems.push(rowclone);
    }
    else {
        otherJSONitems.push(rowclone);
    }
}

console.log(openJSONitems);
for (i = 0; i < openJSONitems.length; i++) {
  $(openJSONitems[i]).appendTo("#home-table-orders");
}

【讨论】:

    【解决方案2】:

    您可以将 then 作为数据元素添加到 DOM 对象中。

    $('body').data('openItems', openJSONitems);
    

    稍后再取回它们:

    var items = $('body').data('openItems');
    

    【讨论】:

      【解决方案3】:

      您考虑过使用 localStorage 吗?

      localStorage.setItem('openJSONitems', openJSONitems );
      

      然后用...检索它

      var openJSONitems = localStorage.getItem('openJSONitems');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-20
        • 2018-06-23
        • 1970-01-01
        • 2016-06-26
        • 1970-01-01
        • 1970-01-01
        • 2012-08-06
        • 2017-05-13
        相关资源
        最近更新 更多