搭配 Shift + 滑鼠 勾選多個Checkbox
目標
- 利用 Shift + 滑鼠點擊 完成勾選範圍的項目
實踐步驟
取得所有的 checkbox元素,並且監聽 click 事件
利用變數紀錄 前次 與 這次 的點擊項目,計算出二者之間的範圍,完成勾選範圍的項目
- lastChooise 記錄最後選擇項目
- e.shiftKey 判斷有無按Shift鍵
成品
JS學習紀錄
思考:如何篩選出範圍
想法1(我的想法):
- 紀錄 最後一次的點擊項目
- 判斷 目前點擊項目 是在 最後一次點擊項目 的上面或下面
- 先爬上一次
- 再爬下一次
- 知道方向後,再由 目前點擊項目 loop至 最後一次點擊項目,完成勾選範圍的項目
想法2(作者作法):
- 紀錄 最後一次的點擊項目
- 重新到尾loop 一次
- 將第一個遇到的「currentChooise 或 lastChooise」當起頭
- 最後結束的時機點,就利用剩下還沒遇到的 「currentChooise 或 lastChooise」當結尾,
- 由此劃分出 currentChooise 與 lastChooise 之間的範圍
由上述的 想法1 和 想法2 來比較的話,想法1 在過程中就多跑了好幾次loop來判斷一些事項,
才能達到結果,所以在此次練習中,又學到了新的思維。
JS程式碼
因為程式碼不多,就直接貼上來,方便看。
1 | const checkboxs = document.querySelectorAll('[type="checkbox"]'); |