async function fetchAndRenderMembers() { try { const response = await fetch("/confirm"); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); if (!data || !data.members || !Array.isArray(data.members)) { console.error("Invalid member data received:", data); return; } const members = data.members; console.log(members); const container = document.getElementById("memberCheckboxes"); container.innerHTML = ""; // 既存の中身を消去 members.forEach((name) => { const newItem = document.createElement("div"); newItem.className = "flex items-center gap-3 mb-2"; console.log(name); newItem.innerHTML = ` ${name} `; container.appendChild(newItem); }); } catch (error) { console.error("Error fetching members:", error); } } // メンバー削除ボタンのイベントリスナー(修正箇所) document.getElementById("reset_btn").addEventListener("click", () => { // メンバー送信処理 const checkboxes = document.querySelectorAll( '#memberCheckboxes input[type="checkbox"]:checked' ); const selectedNames = Array.from(checkboxes).map((cb) => cb.value); if (selectedNames.length === 0) { alert("メンバーを1人以上選択してください。"); return; } fetch("/reset_member", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ names: selectedNames }), }) .then((response) => { if (!response.ok) { throw new Error("送信に失敗しました"); } // サーバーからのJSONレスポンスを期待する return response.json(); }) .then((data) => { alert("選択されたメンバーを削除しました。"); fetchAndRenderMembers(); // 再描画 }) .catch((error) => { console.error("送信エラー:", error); // エラーメッセージを表示する alert(`送信エラー: ${error.message}`); }); }); // ページが表示されたときにチェックボックスを生成 window.addEventListener("DOMContentLoaded", fetchAndRenderMembers); // 「全選択」ボタン処理 document.getElementById("select-all").addEventListener("click", () => { const checkboxes = document.querySelectorAll( '#memberCheckboxes input[type="checkbox"]' ); checkboxes.forEach((checkbox) => { checkbox.checked = true; }); }); // 他のページに移動する関数 function showRecorder() { window.location.href = "/index"; }