Published on

Day10: Hold Shift and Check Checkboxes

Authors
js30

專案介紹: 按住 Shift 鍵對多個 checkbox 進行勾選。

作品頁面:https://iris1114.github.io/javascript30/10_Hold-Shift-and-Check-Checkboxes/

做法

  • 取得所有 checkbox 元素
  • 用 forEach 跑,點擊元素再進行 handleCheck() 這個函式

code

const checkboxes = document.querySelectorAll(".inbox input[type='checkbox']")

let lastChecked

function handleCheck(e) {
  let inBetween = false // 是否按著 Shift 鍵
  if (e.shiftKey && this.checked) {
    //檢查是否有按著 Shift 鍵以及是否被勾選
    checkboxes.forEach((checkbox) => {
      console.log(checkbox)
      // 紀錄首先勾選的核取方塊到最後勾選的核取方塊
      if (checkbox === this || checkbox === lastChecked) {
        inBetween = !inBetween //此時inBetween = true
        console.log('Starting to check them in between!')
      }

      if (inBetween) {
        checkbox.checked = true //inBetween = true 後進行勾選
      }
    })
  }

  lastChecked = this
}

checkboxes.forEach((checkbox) => {
  checkbox.addEventListener('click', handleCheck)
})