專案介紹: 按住 Shift 鍵對多個 checkbox 進行勾選。
作品頁面:https://iris1114.github.io/javascript30/10_Hold-Shift-and-Check-Checkboxes/
做法
- 取得所有 checkbox 元素
- 用 forEach 跑,點擊元素再進行 handleCheck() 這個函式
code
1const checkboxes = document.querySelectorAll(".inbox input[type='checkbox']");23let lastChecked;45function handleCheck(e) {6 let inBetween = false; // 是否按著 Shift 鍵7 if (e.shiftKey && this.checked) {8 //檢查是否有按著 Shift 鍵以及是否被勾選9 checkboxes.forEach((checkbox) => {10 console.log(checkbox);11 // 紀錄首先勾選的核取方塊到最後勾選的核取方塊12 if (checkbox === this || checkbox === lastChecked) {13 inBetween = !inBetween; //此時inBetween = true14 console.log("Starting to check them in between!");15 }1617 if (inBetween) {18 checkbox.checked = true; //inBetween = true 後進行勾選19 }20 });21 }2223 lastChecked = this;24}2526checkboxes.forEach((checkbox) => {27 checkbox.addEventListener("click", handleCheck);28});