練習用:TODOリスト

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>ToDo List</title>
  <style>
    body {
      font-family: Arial, sans-serif;
      margin: 20px;
      padding: 20px;
      background-color: #f9f9f9;
    }
    h1 {
      color: #333;
    }
    #todoForm {
      margin-bottom: 20px;
    }
    input[type="text"] {
      padding: 8px;
      width: 300px;
      margin-right: 10px;
    }
    button {
      padding: 8px 15px;
      background-color: #007BFF;
      color: white;
      border: none;
      cursor: pointer;
    }
    button:hover {
      background-color: #0056b3;
    }
    ul {
      list-style: none;
      padding: 0;
    }
    li {
      margin: 10px 0;
      padding: 8px;
      background: #e9ecef;
      border-radius: 5px;
    }
    li button {
      margin-left: 10px;
      background-color: #dc3545;
    }
  </style>
</head>
<body>
  <h1>ToDo List</h1>
  <form id="todoForm">
    <input type="text" id="todoInput" placeholder="Enter a task">
    <button type="submit">Add</button>
  </form>
  <ul id="todoList"></ul>

  <script src="app.js"></script>
</body>
</html>
// 必要なDOM要素を取得
const todoForm = document.getElementById('todoForm');
const todoInput = document.getElementById('todoInput');
const todoList = document.getElementById('todoList');

// フォームの送信イベントを監視
todoForm.addEventListener('submit', function(event) {
  event.preventDefault(); // ページリロードを防ぐ

  const task = todoInput.value.trim(); // 入力値を取得しトリム
  if (task !== "") {
    addTask(task); // タスクを追加
    todoInput.value = ""; // 入力欄をリセット
  }
});

// タスクをリストに追加する関数
function addTask(task) {
  const li = document.createElement('li');
  li.textContent = task;

  const deleteButton = document.createElement('button');
  deleteButton.textContent = 'Delete';
  deleteButton.addEventListener('click', function() {
    li.remove(); // タスクを削除
  });

  li.appendChild(deleteButton);
  todoList.appendChild(li);
}

1. event引数: todoFormのsubmitイベントが発生すると、イベントオブジェクトがevent引数として渡されます。このオブジェクトには、イベントに関する情報が含まれています。

2. trim()メソッド: todoInput.value.trim()を使用して、ユーザーが入力したタスクの文字列から前後の空白を取り除きます。これにより、空白だけの入力を防ぎます。

  • task変数: trim()で整形されたタスクの内容がtask変数に代入されます。この変数には、実際にリストに追加したいタスクの内容が格納されます。

  • addTask(task): task変数を引数としてaddTask関数が呼び出されます。この時、taskにはユーザーが入力したタスクの内容が渡されます。

5. createElement: addTask関数内で、document.createElement("li")を使用して新しいリストアイテム(li)を作成し、そのtextContentにtaskの内容を設定します。これにより、リストにタスクが表示されるようになります。

いいなと思ったら応援しよう!