Tabela Localstorage
by thvinic
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf8">
<title>sum price</title>
</head>
<body onload="carregar()">
<input type="text" id="product_name" placeholder="nome">
<input type="text" id="item" placeholder="descricao">
<input type="text" id="product_price" placeholder="Valor R$">
<input type="button" id="add" value="adicionar">
<input type="button" id="clear" value="limpar">
<div class="form">
<section onkeyup="salvando()" id="content" contenteditable="true">
<table>
<thead>
<tr>
<th>Item</th>
<th>Descrição</th>
<th>Total</th>
</tr>
</thead>
<tbody></tbody>
</table>
</section>
</div>
</body>
<div>
<p class="sum_price">合計:0円</p>
</div>
</html>
<button id="save">Save</button>
<button id="load">Load</button>
CSS
body {
font-family: 'Helvetica', 'Arial', sans-serif;
width: 450px;
margin: 0 auto;
padding: 20px;
}
table, input {
margin: 5px;
}
input[type=text] {
width: 120px;
}
table,tr,th,td {
font-size: 20px;
width: 70%;
list-style-type: none;
border-radius: 3px;
border: 1px solid #000;
padding: 5px;
}
td {
background: #eeeff0;
padding-left: 15px;
}
JavaScript
$(function(){
const PRODUCT_LIST = "product_list";
/********************
共通関数
********************/
function saveLocalstorage(name, data){
if(isBlank(name) || isBlank(data)) {
alert("error!!");
return false;
}
//★既存のローカルストレージの値を取得
var mainArray = [];
var localStJSON = getLocalstorage(name);
if(localStJSON != null && localStJSON != "") {
// ★JSON形式から連想配列に変換
var mainArray = JSON.parse(localStJSON);
}
//連想配列のチェック
if($.isPlainObject(data)) {
mainArray.push(data);
} else {
alert("登録するデータ形式がエラーです。m(_ _ )m");
return false;
}
// ★連想配列からJSON形式に変換
var mainJSON = JSON.stringify(mainArray);
// ★ローカルストレージに新規保存or上書き
localStorage.setItem(name, mainJSON);
return true;
}
function removeLocalStorage(name){
if(isBlank(name)) {
alert("error!!");
return false;
}
// ★ローカルストレージから削除
localStorage.removeItem(name);
}
function removeLocalStorageAll(){
// ★ローカルストレージをすべてクリア
localStorage.clear();
}
function getLocalstorage(name){
if(isBlank(name)) return;
return localStorage.getItem(name);
}
// テーブルを自動生成する
function bulidTable(){
var tableBody = "";
// ★ローカルストレージからデータを取得
var localSt = getLocalstorage(PRODUCT_LIST);
// ★JSON形式から連想配列に変換
var localStJSON = JSON.parse(localSt);
// TODO
//alert(localStJSON);
$(localStJSON).map(function(index, line){
tableBody += "<tr>";
tableBody +="<td class='child' contenteditable='true' class='name'>" + line ["name"] + "</td>";
tableBody +="<td class='item'>" + line["item"] + "</td>";
tableBody += "<td class='price'>" + line["price"] + "</td>";
tableBody += "</tr>";
});
// ★テーブルを生成
$('table tbody').append(tableBody);
}
function sum(){
// 表の金額を取得する(tdの奇数列を取得)
var pricelist = $("table td[class=price]").map(function(index, val){
var price = parseInt($(val).text());
...