JavaScriptでAPIを使用した開発が必要になり、まずはJavaScriptのCRUDを、ELOOPというオンライン学習サイトで学習しました。Step by Stepのカリキュラムではなく、ドーンと説明があり、その後いきなりテストといった流れなので、1度で腹落ちするのは難しいです。なので、必要な都度見返して理解していこうと思います。
index.html
< !DOCTYPE html> <html> <head> <meta charset='UTF-8'/> <link rel='stylesheet' href='./style.css'/> <title>インデックスページ</title> </head> <body> <div class="container"> <p>入力フォーム</p> <div> <label>名前</label> <input type="text" id="name"/> </div> <div> <label>年齢</label> <input type="number" id="age"/> </div> <div> <label>性別</label> <select id="sex"> <option value='選択しない'>選択しない</option> <option value='男性'>男性</option> <option value='女性'>女性</option> </select> </div> <div> <button class="btn btn-blue" onclick="onFormSubmit()">フォームを送信</button> </div> </div> <div id='display'></div> <script src="./main.js"></script> </body> </html>
style.css
p { margin: 0px; } li { list-style: none; } .container { border: 1px solid #ccc; padding: 10px; } .btn { display: inline-block; padding: 0.5em 1em; text-decoration: none; color: #FFF; border-radius: 3px; } .btn-blue { background: #668ad8; /*ボタンの色*/ } .btn-orange { background-color: #fd9535; } .btn-green { background-color: #03864c }
main.js
// 表示させる部分のdiv要素 const display = document.getElementById('display'); // 生徒データのの初期データ let studentsData = [ { name: '田中太郎', sex: '男性', age: 21 }, { name: '田中次郎', sex: '男性', age: 19 }, { name: '田中花子', sex: '女性', age: 14 } ]; let selectedDataNum = null; // 選択しているデータの番号 let isEditMode = false; // 編集モードであるかどうかの真偽値 document.addEventListener('DOMContentLoaded', function () { refreshDisplay(studentsData); }); // 学生データ提出時のハンドラ function onFormSubmit() { let formData = readFormData(); if (isEditMode) { updataRecord(formData); } else { insertNewRecord(formData); } refreshDisplay(studentsData); resetForm(); }; // フォームの学生データを読み込む関数 function readFormData() { let formData = {}; formData["name"] = document.getElementById("name").value; formData["age"] = document.getElementById("age").value; formData["sex"] = document.getElementById("sex").value; return formData; }; // 学生データに要素を追加し、新しい学生データを戻す関数 function insertNewRecord(form) { studentsData.push(form); }; // 編集モードに移行する関数 function onEdit(index) { selectedDataNum = index; document.getElementById("name").value = studentsData[index].name; document.getElementById("age").value = studentsData[index].age; const selectBox = document.getElementById("sex"); for (let i = 0; i < selectBox.options.length; i++) { if (selectBox.options[i].value === studentsData[index].sex) { selectBox.options[i].selected = true; } } isEditMode = true; }; // 選択された番号(selectedDataNum)の学生データを書き換える関数 function updataRecord(form) { studentsData[selectedDataNum] = form; }; // 指定されたindexのデータをstudentsDataから削除するをする関数 function onDelete(index) { studentsData.splice(index, 1); refreshDisplay(studentsData); }; //渡された学生データを画面に表示する関数 function refreshDisplay(data) { display.textContent = null; for (let itemIndex = 0; itemIndex < data.length; itemIndex++) { display.insertAdjacentHTML('beforeend', ` <ul class="container"> <li>名前:${data[itemIndex].name}</li> <li>性別:${data[itemIndex].sex}</li> <li>年齢:${data[itemIndex].age}歳</li> <button class="btn btn-green" onclick="onEdit(${itemIndex})">編集</button> <button class="btn btn-orange" onclick="onDelete(${itemIndex})")>削除</button> `) } }; // フォームの内容を初期値に戻す関数 function resetForm() { document.getElementById("name").value = null; document.getElementById("sex").value = null; document.getElementById("age").value = null; document.getElementById("sex").options[0].selected = true; };
※文字化けしている箇所(①&#91; ⇒ [ 、 ②&#93; ⇒ ] )
表示画面
[siteorigin_widget class=”AdWidgetItem”][/siteorigin_widget]
[siteorigin_widget class=”WP_Widget_Search”][/siteorigin_widget]
[siteorigin_widget class=”WP_Widget_Pages”][/siteorigin_widget]
[siteorigin_widget class=”AdWidgetItem”][/siteorigin_widget]