[筆記]JavaScript30學習-Day10

Lisa Li
木棉草工作室
Published in
Oct 22, 2020

2020.10.22

學習網站:javascript30

僅記錄JS及較複雜的CSS部分,若有不清楚或是歡迎留言討論,
謝謝(´。• ω •。`)

Hold Shift to Check Multiple Checkboxes

Step 1. 選取所有 input並新增addEventListener

const checkboxes = 
document.querySelectorAll('.inbox input[type="checkbox"]');
checkboxes.forEach(checkbox =>
checkbox.addEventListener('click', handleCheck));

Step 2. 觸發的程式:點選後,記錄該被勾選的元件

const checkboxes = document.querySelectorAll('.inbox input[type="checkbox"]');
let lastChecked;
function handleCheck(e) {
lastChecked = this;
}
checkboxes.forEach(checkbox => checkbox.addEventListener('click', handleCheck));

Step 3. 判斷

使用 inBetween = false;當作判斷依據

在 按下shift且已勾選的物件 的條件下,進入每個勾選物件的迴圈判斷是否符合在二個勾選物件之間,若符合則修改 inBetween狀態,已觸發下方勾選條件。

const checkboxes = 
document.querySelectorAll('.inbox input[type="checkbox"]');
let lastChecked;
function handleCheck(e) {
let inBetween = false;
if (e.shiftKey && this.checked) {
checkboxes.forEach(checkbox => {
if (checkbox === this ||
checkbox === lastChecked) {
inBetween = !inBetween;
}
if (inBetween) {
checkbox.checked = true;
}
})
}
lastChecked = this;
}
checkboxes.forEach(checkbox => checkbox.addEventListener('click', handleCheck));

💫延伸資料:

--

--