【问题标题】:retrieving last key in javascript localstorage检索 javascript localstorage 中的最后一个键
【发布时间】:2013-05-13 18:51:03
【问题描述】:

我正在做一个大学作业,所以请原谅这里完全缺乏知识。我的任务是为“客户”创建一个基于 Web 的应用程序,该应用程序要求我在他们完成所有详细信息后打开发票,到目前为止,我的表格工作正常,我可以毫无问题地保存到本地存储,甚至可以以我想要的格式检索信息。

问题是,如果我有多个“订单”,我只能检索保存到 localstorage 的第一个字符串,我不知道如何让它显示最新/最后一个。

密钥是从日期派生的几乎随机生成的数字,因为我们必须假设大量订单。我附上了下面的代码,所以如果有人可以提供帮助,我将不胜感激。我也不能使用 Jquery 或 JSON 或类似的东西。我们被告知我们无法使用这些。我也不能使用服务器(php 等)。

谢谢 史蒂夫

<script>
var i = 0;

var itemKey = localStorage.key(i);
var values = localStorage.getItem(itemKey);
values = values.split(";");
var name = values[0];
var company = values[1];
var contactnumber = values[2];
var email = values[3];
var address1 = values[4];
var address2 = values[5];
var suburb = values[6]
var postcode = values[7];
var comments = values[8];
var bags = values[9];
var distance = values[10];
var hdelivery_fee = values[11];
var hprice = values[12];
var htotal_notax = values[13];
var hgst = values[14];
var htotal_tax = values[15];
var hordernumber  = values[16];


document.write('Name: ' + name + '<br />');
document.write('Company: ' + company + '<br />');
document.write('Contact: ' + contactnumber + '<br />');
document.write('Email; ' + email + '<br />');
document.write('Address; ' + address1 + '<br />');
document.write('Address; ' + address2 + '<br />');
document.write('Suburb; ' + suburb + '<br />');
document.write('Postcode; ' + postcode + '<br />');
document.write('Comments; ' + comments + '<br />');
document.write('Number of Bags; ' + bags + '<br />');
document.write('Distance; ' + distance + '<br />');
document.write('Delivery Fee; $' + hdelivery_fee + '<br />');
document.write('Price of Bags; $' + hprice + '<br />');
document.write('Total Ex-GST; $' + htotal_notax + '<br />');
document.write('GST; $' + hgst + '<br />');
document.write('Total Inc GST; $' + htotal_tax + '<br />');
document.write('hordernumber; ' + hordernumber + '<br />');


</script>

【问题讨论】:

  • 您应该为此使用 JSON。
  • 嘿,伙计,是的,我知道,我希望我们可以,如果可以的话,整个事情会变得非常容易,但是讲师特别说我们不能,所以这对我们来说很糟糕:-)
  • 我认为你没有做对。

标签: javascript local-storage


【解决方案1】:

要显示数组的最后一个值,您应该使用 values[values.length-1]。

这将保证你得到绝对的最后一个。

【讨论】:

  • Hey Pbrain,谢谢你这么快回复,关于我上面的代码,我会把它放在哪里?
  • 嘿伙计,你的回答让我走上了正轨,谢谢!我最终用这个var i = localStorage.length-1; 修复了它,再次感谢!
【解决方案2】:

简单的说

var itemKey = localStorage.key(i);
var values = localStorage.getItem(itemKey); in a loop and increement i each time.

【讨论】:

    【解决方案3】:

    你可以试试这样的

    var localStorageKeys = Object.keys(localStorage);
    
    getOrder(localStoragesKeys[localStoragesKeys.length-1]);
    
    function getOrder(itemKey) {
        var values = localStorage.getItem(itemKey);
        values = values.split(";");
        var name = values[0];
        var company = values[1];
        var contactnumber = values[2];
        var email = values[3];
        var address1 = values[4];
        var address2 = values[5];
        var suburb = values[6]
        var postcode = values[7];
        var comments = values[8];
        var bags = values[9];
        var distance = values[10];
        var hdelivery_fee = values[11];
        var hprice = values[12];
        var htotal_notax = values[13];
        var hgst = values[14];
        var htotal_tax = values[15];
        var hordernumber  = values[16];
    
    
        document.write('Name: ' + name + '<br />');
        document.write('Company: ' + company + '<br />');
        document.write('Contact: ' + contactnumber + '<br />');
        document.write('Email; ' + email + '<br />');
        document.write('Address; ' + address1 + '<br />');
        document.write('Address; ' + address2 + '<br />');
        document.write('Suburb; ' + suburb + '<br />');
        document.write('Postcode; ' + postcode + '<br />');
        document.write('Comments; ' + comments + '<br />');
        document.write('Number of Bags; ' + bags + '<br />');
        document.write('Distance; ' + distance + '<br />');
        document.write('Delivery Fee; $' + hdelivery_fee + '<br />');
        document.write('Price of Bags; $' + hprice + '<br />');
        document.write('Total Ex-GST; $' + htotal_notax + '<br />');
        document.write('GST; $' + hgst + '<br />');
        document.write('Total Inc GST; $' + htotal_tax + '<br />');
        document.write('hordernumber; ' + hordernumber + '<br />');
    }
    

    【讨论】:

      【解决方案4】:

      如果您必须使用localStorage 并且不能使用任何客户端数据库,那么我将使用new Date().getTime() 之类的键保存每个条目,并在其前面加上一个已知字符串,这样您就有了key-1368910344400

      当您需要检索最后一个条目时,您可以这样做:

      var keys = Object.keys(localStorage);
      keys = keys.map(function(key) {
        // check if the current key matches match "key-"
        // if that's the case create a new Date object with the ms obtained by a split
        // return the Date
      });
      
      // sort keys and take the most recent
      

      这通常是一个糟糕的选择,但据我所知,你的选择有限,所以你必须稍微扩展一下。

      如果您可以使用支持 html5 和 webdb 的浏览器,那么只需将 localStorage 扔掉即可:D,这是一个示例:http://www.html5rocks.com/en/tutorials/webdatabase/todo/

      【讨论】:

        猜你喜欢
        • 2013-05-28
        • 2021-08-04
        • 2017-01-07
        • 1970-01-01
        • 2013-05-14
        • 2013-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多