0

我正在做一个大学作业,所以请原谅这里完全缺乏知识。我的任务是为“客户”创建一个基于 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>
4

4 回答 4

0

你可以试试这样的

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 />');
}
于 2013-05-18T20:51:06.310 回答
0

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

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

于 2013-05-18T20:48:20.563 回答
0

如果您必须使用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-18T20:57:24.070 回答
0

简单的把

var itemKey = localStorage.key(i);
var values = localStorage.getItem(itemKey); in a loop and increement i each time.
于 2013-05-18T20:47:56.887 回答