JavaScript入門ガイド – DOM編 - 3. リセット処理の実装
3. リセット処理の実装
メモアプリケーションの開発は続きます。ここではあらたに reset
ボタンを追加してリストをクリアできるようにプログラミングしてみようと思います。
既存の memo.html
ファイルを次のように編集します。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Memo App</title>
</head>
<body>
<h3>Memo App</h3>
<form>
<input type="text" id="memoTxt">
<button type="button" id="addBtn">add</button>
<button type="button" id="resetBtn">reset</button>
</form>
<ul id="memoList">
<li>Memo 1</li>
</ul>
<script src="memo.js"></script>
</body>
</html>
今回編集したのは入力フォームの定義部分です。
<form>
<input type="text" id="memoTxt">
<button type="button" id="addBtn">add</button>
<button type="button" id="resetBtn">reset</button>
</form>
ここではあらたに reset
ボタンを追加しています。reset
ボタンの id
属性には resetBtn
という値が指定されている点も確認しておいてください。この resetBtn
という id
を使って、後のJavaScriptコードから reset
ボタンにアクセスします。
JavaScriptプログラムの実装
つづいて memo.js
ファイルに reset
ボタンのコードを追加してみましょう。
const resetBtn = document.querySelector("#resetBtn");
resetBtn.onclick = () => {
const memoList = document.querySelector("#memoList");
while (memoList.firstChild) {
memoList.removeChild(memoList.firstChild);
}
}
// ...既存のコードは省略
ここでは add
ボタンのときと同様に document.querySelector
を使って reset
ボタンの参照を取得しています。また resetBtn.ocClick
プロパティに関数を代入することで reset
ボタンクリック時の処理を実装しています。
次に reset
ボタンクリック時の処理の詳細を見てみましょう。
const memoList = document.querySelector("#memoList");
while (memoList.firstChild) {
memoList.removeChild(memoList.firstChild);
}
ここでも document.querySelector
を使ってリスト(<ul>
) タグの参照を取得してます。その後、while
文を使ってループ処理を実装しています。
while (memoList.firstChild) {
memoList.removeChild(memoList.firstChild);
}
while
文のループ条件には memoList.firstChild
と指定しています。まず firstChild
プロパティは、先頭の子要素を取得します。この場合、変数 memoList
の子要素は <li>
タグを意味するので、<ul>
タグの中に <li>
タグが1つでも存在する場合は、while
文の判定条件は true
となります。つまり子要素が存在する場合は、処理を繰り返す、という意味になります。
また while
文のループ処理の中では次のように memoList.removeChild
メソッドを呼び出しています。
memoList.removeChild(memoList.firstChild);
引数には、先ほどと同じ memoList.firstChild
を指定しているので、変数 memoList
の先頭要素を削除する、という意味になります。この処理は while
文によって繰り返し実行されるので、結果として <ul>
タグの中に存在する <li>
タグを先頭から順番にすべて削除することになります。
動作確認
それではブラウザを開いて、memo.html
にアクセスしてみましょう。表示された画面で reset
ボタンをクリックするとリストのメモ書きが削除されるのがわかります。
ここまでで add
ボタンによる追加処理と、reset
ボタンによる削除処理を実装することができました。ただし、ブラウザをリロードするともとのHTMLの表示に戻ってしまいます。次は作成したデータを保存する方法について考えてみようと思います。