<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>キャラ選択ボタン版 注文システム</title> <style> body { font-family: Arial; padding: 20px; background-color: #f0f8ff; } .box { background-color: #fff; padding: 15px; border-radius: 10px; margin-bottom: 20px; box-shadow: 0 0 5px rgba(0,0,0,0.1); max-width: 500px; } .char-button { padding: 8px 16px; margin: 5px; font-size: 16px; cursor: pointer; } .hidden { display: none; } </style> </head> <body> <div class="box"> <h2>座席番号を入力</h2> <input type="number" id="seatInput" /> <button onclick="startOrder()">開始</button> </div> <div id="charBox" class="box hidden"> <h2>キャラクターを選んでください</h2> <div id="charButtons"></div> </div> <div id="orderBox" class="box hidden"> <h2>メニューを選択</h2> <select id="menuSelect"> <option value="マグロ寿司">マグロ寿司</option> <option value="エビ寿司">エビ寿司</option> <option value="サーモン寿司">サーモン寿司</option> </select> <br><br> <button onclick="makeOrder()">注文</button> </div> <div id="myOrdersBox" class="box hidden"> <h3>自分の注文</h3> <div id="myOrders"></div> <h3>この座席の全員の注文</h3> <div id="allOrders"></div> </div> <script> var allSeats = {}; // 座席ごとの注文 var characterList = ["ポポ", "ピピ", "ププ"]; var currentCharacter = ""; var currentSeat = ""; // 座席選択後に呼ばれる function startOrder() { var seatInput = document.getElementById("seatInput").value; if (seatInput === "") { alert("座席番号を入力してください。"); return; } currentSeat = seatInput; if (!allSeats[currentSeat]) { allSeats[currentSeat] = { orders: [], usedChars: [] }; } showCharacterButtons(); document.getElementById("charBox").classList.remove("hidden"); } // キャラ選択ボタンを生成 function showCharacterButtons() { var container = document.getElementById("charButtons"); container.innerHTML = ""; for (var i = 0; i < characterList.length; i++) { var charName = characterList[i]; if (allSeats[currentSeat].usedChars.indexOf(charName) === -1) { var btn = document.createElement("button"); btn.innerText = charName; btn.className = "char-button"; btn.setAttribute("data-char", charName); btn.onclick = function() { selectCharacter(this.getAttribute("data-char")); }; container.appendChild(btn); } } } // キャラが選ばれたら実行 function selectCharacter(charName) { currentCharacter = charName; allSeats[currentSeat].usedChars.push(charName); document.getElementById("charBox").classList.add("hidden"); document.getElementById("orderBox").classList.remove("hidden"); } // 注文処理 function makeOrder() { var menu = document.getElementById("menuSelect").value; var order = { character: currentCharacter, menu: menu }; allSeats[currentSeat].orders.push(order); showOrders(); } // 注文の表示 function showOrders() { document.getElementById("myOrdersBox").classList.remove("hidden"); var myOrdersArea = document.getElementById("myOrders"); var allOrdersArea = document.getElementById("allOrders"); myOrdersArea.innerHTML = ""; allOrdersArea.innerHTML = ""; var orders = allSeats[currentSeat].orders; for (var i = 0; i < orders.length; i++) { var o = orders[i]; var pAll = document.createElement("p"); pAll.innerText = (i + 1) + ": " + o.character + " - " + o.menu; allOrdersArea.appendChild(pAll); if (o.character === currentCharacter) { var pMine = document.createElement("p"); pMine.innerText = (i + 1) + ": " + o.menu; myOrdersArea.appendChild(pMine); } } } // 会計リセット(例: ?reset=1) var params = new URLSearchParams(window.location.search); if (params.has("reset")) { var resetSeat = params.get("reset"); allSeats[resetSeat] = { orders: [], usedChars: [] }; alert("座席 " + resetSeat + " の会計がリセットされました。"); } </script> </body> </html>