Reputation: 45
I am attempting to pull a string of data from localstorage in javascript and combine multiple values from multiple strings. For example I may have the following 2 strings
Bob;companyA;6141692120;[email protected];1 John St;;Bellevue;6056;;6;10;20.00;52.800000000000004;72.80;7.28;80.08;
Jane;companyB;6157692120;[email protected];1 Jack St;;Bellevue;6056;;6;10;20.00;52.800000000000004;72.80;7.28;80.08;
I want to ignore the first few and add the last 5 or 6 together from each, so value [13] in string A + value [13] in string B = X, there will be doens of strings and they all have random numbers, I have attached the javascript code below and am hoping someone can point me in the right direction.
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 />');
}
Also it is probably worth mentioning that this is an assignment and as such I am not allowed to use JSON or jquery in any capacity
EDIT: I have changed the code to match the answer given below, and I think i have taken the output out of the loop, however I am incredibly new at this so a lot of it is hit and miss. It doesnt seem to be working as is even though it looks like it should (to me)
EDIT2: Adding javascript for localstorage info source
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!");
}
}
}
EDIT3:
adding entire html page for location of report including 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>
Upvotes: 4
Views: 1707
Reputation: 841
Your solution uses a loop that includes all the process - even the output! You need to separate the process in two. The loop part would pick up all the data and add it all up, then the output part doesn't need a loop.
Try this:
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 />');
}
Upvotes: 1