Amazon予約商品管理アプリ
以下のフォームから予約した商品の情報を入力してください。
以下が、予約した商品の一覧です。
| 商品名 | 価格 | 到着予定日 | メモ |
|---|---|---|---|
| まだ予約した商品がありません。 | |||
以下が、アマゾンの予約した商品の管理を行うWebアプリの実装例です。
```html
<!DOCTYPE html>
<html>
<head>
<title>Amazon予約商品管理</title>
</head>
<body>
<h1>Amazon予約商品管理アプリ</h1>
<div>
<p>以下のフォームから予約した商品の情報を入力してください。</p>
<form>
<label for="item-name">商品名:</label>
<input type="text" id="item-name">
<br>
<label for="item-price">価格:</label>
<input type="number" id="item-price" min="1" step="1">
<br>
<label for="item-arrive-date">到着予定日:</label>
<input type="date" id="item-arrive-date">
<br>
<label for="notes">メモ:</label>
<textarea id="notes"></textarea>
<br>
<button type="button" onclick="saveItem()">保存</button>
</form>
</div>
<div>
<p>以下が、予約した商品の一覧です。</p>
<table>
<thead>
<tr>
<th>商品名</th>
<th>価格</th>
<th>到着予定日</th>
<th>メモ</th>
</tr>
</thead>
<tbody id="item-list">
<tr>
<td colspan="4">まだ予約した商品がありません。</td>
</tr>
</tbody>
</table>
</div>
<script>
// JSON形式で保存された予約した商品のリストを保持する変数
var items = [];
// ページを読み込んだときに、保存された商品のリストがあるかどうかチェックする
if(localStorage.getItem('items')) {
items = JSON.parse(localStorage.getItem('items'));
showItems();
}
// 保存ボタンをクリックしたときの関数
function saveItem() {
var name = document.getElementById('item-name').value;
var price = document.getElementById('item-price').value;
var arriveDate = document.getElementById('item-arrive-date').value;
var notes = document.getElementById('notes').value;
// 入力チェック
if(!name || !price || !arriveDate) {
alert('必須項目が入力されていません。');
return;
}
// 価格を数値に変換
price = parseInt(price, 10);
// 日付をDateオブジェクトに変換
arriveDate = new Date(arriveDate);
// 新しい商品のオブジェクトを作成して、リストに追加
var newItem = {
name: name,
price: price,
arriveDate: arriveDate,
notes: notes
}
items.push(newItem);
// リストを表示
showItems();
// ローカルストレージに保存
localStorage.setItem('items', JSON.stringify(items));
// フォームをリセット
document.getElementById('item-name').value = '';
document.getElementById('item-price').value = '';
document.getElementById('item-arrive-date').value = '';
document.getElementById('notes').value = '';
}
// 保存された商品のリストを表示する関数
function showItems() {
// テーブルのtbodyを取得
var tbody = document.getElementById('item-list');
// 一旦、tbody内をクリア
tbody.innerHTML = '';
// リストが空の場合は、特別なメッセージを表示
if(items.length == 0) {
var tr = document.createElement('tr');
var td = document.createElement('td');
td.setAttribute('colspan', 4);
td.textContent = 'まだ予約した商品がありません。';
tr.appendChild(td);
tbody.appendChild(tr);
}
else {
// リストがある場合は、テーブルに行を追加
for(var i=0; i<items.length; i++) {
var item = items[i];
var tr = document.createElement('tr');
var td1 = document.createElement('td');
td1.textContent = item.name;
tr.appendChild(td1);
var td2 = document.createElement('td');
td2.textContent = item.price + '円';
tr.appendChild(td2);
var td3 = document.createElement('td');
td3.textContent = formatDate(item.arriveDate);
tr.appendChild(td3);
var td4 = document.createElement('td');
td4.textContent = item.notes;
tr.appendChild(td4);
tbody.appendChild(tr);
}
}
}
// 日付を「YYYY/MM/DD」の形式に変換する関数
function formatDate(date) {
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
return year + '/' + month + '/' + day;
}
</script>
</body>
</html>
```
ジョークとしては、フォームの入力項目に「収納場所(個人的な妄想ですが)」などの入力項目を追加することで、「自分が予約した商品をすぐに見つけられるようにすることができる」というアイデアを取り入れることができます。また、保存された商品のリストに「自分の財布の中身を反省する」といったジョーク的なコメントを追加することもできます。