javascript - 在javascript中从本地存储中检索多个字符串值

标签 javascript arrays html local-storage

我试图从 javascript 中的本地存储中提取一串数据,并组合来自多个字符串的多个值。例如 我可能有以下 2 个字符串

Bob;companyA;6141692120;email1@email.com;1 John St;;Bellevue;6056;;6;10;20.00;52.800000000000004;72.80;7.28;80.08;
Jane;companyB;6157692120;email2@email.com;1 Jack St;;Bellevue;6056;;6;10;20.00;52.800000000000004;72.80;7.28;80.08;

我想忽略前几个并将每个的最后 5 或 6 加在一起,所以字符串 A 中的值 [13] + 字符串 B 中的值 [13] = X,会有 doens 个字符串,它们都有随机数,我附上了下面的 javascript 代码,希望有人能指出我正确的方向。

windows.onload= getAllItems();
function getAllItems(){

var all = [];
for(var i = 0, j = localStorage.length; i < j; i++) {
    all[i] = localStorage[i].split(';');
}

var sum = 0;
for(var i = 0, j = all.length; i < j; i++) {
    sum += all[i][12];
}

var bags = all[9];
var distance = all[10];
var hdelivery_fee = all[11];
var hprice = all[12];
var htotal_notax = all[13];
var hgst = all[14];
var htotal_tax = all[15];
var hordernumber  = all[16];

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 />');
}

另外可能值得一提的是,这是一项作业,因此我不允许以任何身份使用 JSON 或 jquery

编辑:我已经更改了代码以匹配下面给出的答案,我认为我已经将输出从循环中取出,但是我在这方面非常陌生,所以很多都是偶然的。它似乎没有按原样工作,尽管它看起来应该(对我来说)

EDIT2:为本地存储信息源添加 javascript

function source()
{
var newDate = new Date();
var itemId = newDate.getTime();
var values = new Array();
    var name = document.getElementById("name").value;
    var company = document.getElementById("company").value;
    var contactnumber= document.getElementById("contactnumber").value;
    var email = document.getElementById("email").value;
    var address1 = document.getElementById("address1").value;
    var address2 = document.getElementById("address2").value;
    var suburb = document.getElementById("suburb").value;
    var postcode = document.getElementById("postcode").value;
    var comments = document.getElementById("comments").value;
    var bags = document.getElementById("bags").value;
    var distance = document.getElementById("distance").value;
    var hdelivery_fee = document.getElementById("hdelivery_fee").value;
    var hprice = document.getElementById("hprice").value;
    var htotal_notax = document.getElementById("htotal_notax").value;
    var hgst = document.getElementById("hgst").value;
    var htotal_tax= document.getElementById("htotal_tax").value;
    var hordernumber= document.getElementById("hordernumber").value;


values.push(name);
values.push(company);
values.push(contactnumber);
values.push(email);
values.push(address1);
values.push(address2);
values.push(suburb);
values.push(postcode);
values.push(comments);
values.push(bags);
values.push(distance);
values.push(hdelivery_fee);
values.push(hprice);
values.push(htotal_notax);
values.push(hgst);
values.push(htotal_tax);
values.push(hordernumber);

try {
    localStorage.setItem(itemId, values.join(";")); 
} catch (e) {
    if (e == QUOTA_EXCEEDED_ERR) {
        alert("Quota exceeded!");
    }
}

}

编辑3:

为报告的位置添加整个 html 页面,包括 javascript。

<html>
<head>
<title>Form Processor</title>
     <link rel="stylesheet" type="text/css" href="layout.css">




</head>
<body>
<div id="header">
        <h1 id="main_tile"> Everwarm Fuel Merchants - Daily Report </h1>

    </div>
<h1> Daily Sales Summary <h1>

<p>
<script>
function getAllItems(){
    var all=[];
    for (i = 0,j=localStorage.length; i<j; i++) {
        all[i] = localStorage.getItem(localStorage.key(i)).split(';');
    }
    function getTotal(index) {
         var sum = 0;
         for(var i = 0, j = all.length; i < j; i++) {
            sum += parseFloat(all[i][index]);
        }
        return sum;
    }
    var bags = getTotal(9);
    var distance = getTotal(10);
    var hdelivery_fee = getTotal(11);
    var hprice = getTotal(12);
    var htotal_notax = getTotal(13);
    var hgst = getTotal(14);
    var htotal_tax = getTotal(15);
    var hordernumber = getTotal(16);

    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>

  </p>


<input type="button" value="Clear storage" onclick="localstorage.clear()" > </input>

<input type="button" value="Return" onclick="history.back()"> </input>

</body>
</html> 

最佳答案

您的解决方案使用了一个包含所有过程的循环——甚至是输出! 您需要将过程一分为二。循环部分将获取所有数据并将其全部相加,然后输出部分不需要循环。

试试这个:

function getAllItems(){
    var all=[];
    for (i = 0,j=localStorage.length; i<j; i++) {
        all[i] = localStorage.getItem(localStorage.key(i)).split(';');
    }
    function getTotal(index) {
         var sum = 0;
         for(var i = 0, j = all.length; i < j; i++) {
            sum += parseFloat(all[i][index]);
        }
        return sum;
    }
    var bags = getTotal(9);
    var distance = getTotal(10);
    var hdelivery_fee = getTotal(11);
    var hprice = getTotal(12);
    var htotal_notax = getTotal(13);
    var hgst = getTotal(14);
    var htotal_tax = getTotal(15);
    var hordernumber = getTotal(16);

    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 />');
  }

关于javascript - 在javascript中从本地存储中检索多个字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16632421/

相关文章:

javascript - window.location= 和 window.location.replace() 有什么区别?

Javascript:破坏性的 array.filter()?

javascript 对象过滤器 - 不返回关联键

c - 位数组的问题

php - 无法使用 max_filesize 发布表单

javascript - 如何隐藏软键盘并保持输入焦点

javascript - Algolia:如何根据值对搜索进行排名?

javascript - Bootstrap 弹出窗口不起作用

javascript - 如果内容可编辑 div 位于光标位置下方,如何删除它?

javascript - 如何使用 html、javascript 将属性的值存储在变量内?