プロジェクト
ここまでの知識を使って、シンプルな ToDo アプリを作ってみましょう。
ルール
- ToDo の追加ができます。
- ToDo の削除ができます。
- ToDo の編集ができます。
- 入力欄が空欄だと ToDo の追加ができなくなります。
ヒント
いきなり作るのが難しい場合はタスクを分解してみましょう。今回はルールにある4つの課題をひとつずつ解決していきます。
- ToDo を追加できるようにする。
- ToDo を削除できるようにする。
- ToDo を編集できるようにする。
- 空の ToDo を追加できないようにする。
の4つの仕事があるので、まず 1 からやっていきましょう。
ステップ 1: ToDo を追加する
ひとまず ToDo の一覧、ToDo の入力欄、ToDo の追加ボタンが必要です。
ul 要素と input 要素と button 要素を使ってみましょう。
index.html
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>Title</title>
</head>
<body>
<ul id="todo-list"></ul>
<input id="todo-input" />
<button id="add-button">追加</button>
<script src="./script.js"></script>
</body>
</html>
次に JavaScript ファイルを作成して追加ボタンを押したときの処理を記述しましょう。
script.js
const todoList = document.getElementById("todo-list");
const todoInput = document.getElementById("todo-input");
const addButton = document.getElementById("add-button");
addButton.onclick = () => {
// 追加ボタンを押すと ToDo を 1 つ追加する
};
この時箇条書きの項目として新たに li 要素を追加する必要があります。
DOM の章で扱ったように、document.createElement 関数 を使うと新しい要素を作成できます。
また、Node#appendChild メソッド を用いることで既存の要素内に子要素を追加することができます。
const li = document.createElement("li");
todoList.appendChild(li);
また、HTMLInputElement#value プロパティから、DOM に対応する input 要素の入力欄への入力内容を取得できます。
const todoText = document.createElement("span");
todoText.textContent = todoInput.value; // input 要素に入力された文字列を取得する
todoInput.value = ""; // input 要素の入力欄を空にする