」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > JavaScript- 按住 Shift 可以選取多個複選框!

JavaScript- 按住 Shift 可以選取多個複選框!

發佈於2024-07-30
瀏覽:891

在接受 Wes Bos 的 JavaScript30 的另一個嚴峻挑戰後,我又回來了!今天的挑戰比我原想的要多得多。 按住 Shift 來選取多個方塊是一種常見的做法,我很驚訝地發現它沒有自動內建到網站中,而且您必須自己手動編碼。 顯然,如果是這樣的話,那麼這堂課就不會存在,但你知道我的意思。

在完全透明的情況下,我放棄了並跟隨韋斯一起學習這節課。 影片開始時,他甚至鼓勵我們掌控一切並自己解決問題。 經過一個半小時​​的谷歌搜尋並嘗試任何真正的進步後,我放棄了並繼續學習本課程。 我並不為放棄這個而感到自豪,但我確實陷入了不相關信息的兔子洞,我懷疑我本周是否會想出一個實際的解決方案! 所以是的...我低著頭跟著韋斯。

screen shot of the checklist

本課非常不言自明。 您將獲得一個基本清單,然後被要求透過在選取一個方塊時按住 Shift 鍵來選取多個方塊。 涼爽的。 事實證明這比我想像的要複雜得多。 在我們深入實際的課程以及我們需要做的事情之前,我確實想指出一件事。

    input:checked   p {
      background: #F9F9F9;
      text-decoration: line-through;
    }

這行非常簡單的 CSS 對我來說很酷。 我知道可以用 HTML 和 建立一個複選框,但我不知道您可以透過選取該框來更改複選框/複選框所在的 div 的屬性。 我還想在這裡指出,韋斯也提到了他說「檢查」這個詞的頻率,因為影片中出現了很多次…公平警告,這篇文章中也會出現同樣的情況。

  let log = document.querySelector('#log');
  document.addEventListener("click", logKey)
  function logKey(e) {
    console.log(`The shift key is pressed: ${e.shiftKey}`);}

function validate() {
  if (document.getElementsByClassName('item').checked) {
    alert('checked');
  } else { alert('you didnt check it!')} }
validate()  
  let checkBoxes = document.querySelectorAll('checkbox');
  let selected = [];
  for (let i=0; i 



此行上方程式碼區塊中的所有內容都失敗了。 這些只是我嘗試自己找出解決方案的一些嘗試。 有幾次我確實感覺自己走在正確的軌道上。 例如,函數 logKey(e) 的第一部分我非常自豪地找到瞭如何在單擊期間按下 Shift 鍵和未按下時進行呼叫。 之後...我什至無法猜測如何繼續。 我再次陷入困境。

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

function handleCheck(e) {
  let inBetween = false
if (e.shiftKey && this.checked){
  checkboxes.forEach (checkbox => {
    console.log(checkbox)
    if (checkbox === this || checkbox === lastChecked) {
      inBetween =!inBetween;
    }
    if(inBetween) {
      checkbox.checked = true
    }
  })
}
  lastChecked = this;
}
checkboxes.forEach(checkbox => checkbox.addEventListener('click', handleCheck));

韋斯來這裡是為了拯救世界。 他確實聲明可以透過在 HTML 中呼叫父/子來選中多個框,但這很容易被 HTML 的更改所破壞。 相反,他讓我們使用 for 循環,或至少是 forEach。 這對我來說確實很有意義。 這是一種相當簡單的方法,可以瀏覽 HTML 的每個部分,同時檢查是否選取了某個方塊。 但這只是成功的一半。
使用 forEach 之後,我們必須建立一個新變數來確定哪個元素位於檢查的第一個元素和檢查的最後一個元素之間。 這就是我們檢查剩餘框並更改其屬性以反映最初檢查的元素的方式。 這裡有太多的行讓我有點迷失......再次使用||並使用 !變量之前對我來說是奇怪的概念。 在我的下一個項目之前,我必須更多地研究它們。
在我知道發生了什麼事之前,我們已經完成了挑戰。 它剛剛起作用了。 就在那一刻,我發現這個挑戰比我想像的要簡單得多。 歸根結底,程式碼並不多。 能夠一起使用所有零件是複雜的部分。 我也許能夠自己解決這個問題,但即使這樣說,我懷疑我能否在本週末之前找到一個可行的解決方案。
好了,這篇文章就到此結束了! 今天的課程對我來說不是最好的,但它很好地提醒我,我還有很長的路要走。 我希望您回來查看我的下一篇文章,其中包含 Wes Bos 的 JavaScript 30 的下一部分 - 11 自訂 HTML5 視訊播放器!

picture of the next lesson!

版本聲明 本文轉載於:https://dev.to/virtualsobriety/javascript30-10-hold-shift-to-check-multiple-checkboxes-4ln5?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 為什麼PYTZ最初顯示出意外的時區偏移?
    為什麼PYTZ最初顯示出意外的時區偏移?
    與pytz 最初從pytz獲得特定的偏移。例如,亞洲/hong_kong最初顯示一個七個小時37分鐘的偏移: 差異源利用本地化將時區分配給日期,使用了適當的時區名稱和偏移量。但是,直接使用DateTime構造器分配時區不允許進行正確的調整。 example pytz.timezone(&#...
    程式設計 發佈於2025-05-02
  • 為什麼PHP的DateTime :: Modify('+1個月')會產生意外的結果?
    為什麼PHP的DateTime :: Modify('+1個月')會產生意外的結果?
    使用php dateTime修改月份:發現預期的行為在使用PHP的DateTime類時,添加或減去幾個月可能並不總是會產生預期的結果。正如文檔所警告的那樣,“當心”這些操作的“不像看起來那樣直觀。 ; $ date->修改('1個月'); //前進1個月 echo $ date->...
    程式設計 發佈於2025-05-02
  • Java中如何使用觀察者模式實現自定義事件?
    Java中如何使用觀察者模式實現自定義事件?
    在Java 中創建自定義事件的自定義事件在許多編程場景中都是無關緊要的,使組件能夠基於特定的觸發器相互通信。本文旨在解決以下內容:問題語句我們如何在Java中實現自定義事件以促進基於特定事件的對象之間的交互,定義了管理訂閱者的類界面。 以下代碼片段演示瞭如何使用觀察者模式創建自定義事件: args...
    程式設計 發佈於2025-05-02
  • JavaScript函數調用中對象與基本類型的傳值與傳引用行為
    JavaScript函數調用中對象與基本類型的傳值與傳引用行為
    JAVASCRIPT Pass-by Refersion vs. Pass-by value 原語(例如數字和字符串)是按值傳遞的,這意味著在調用函數中創建了原始的副本。相比之下,非主要物質(主要是對象)是通過引用傳遞的。 在對象的情況下,對對象的引用是傳遞而不是複制。這意味著在所提供的示例中,...
    程式設計 發佈於2025-05-02
  • 如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    從python import codecs import codecs import codecs 導入 text = codecs.decode('這狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#帶有...
    程式設計 發佈於2025-05-02
  • 如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    postgresql:為每個唯一標識符在postgresql中提取最後一行,您可能需要遇到與數據集合中每個不同標識的信息相關的信息。考慮以下數據:[ 1 2014-02-01 kjkj 在數據集中的每個唯一ID中檢索最後一行的信息,您可以在操作員上使用Postgres的有效效率: id dat...
    程式設計 發佈於2025-05-02
  • 為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    mySQL錯誤#1089:錯誤的前綴鍵錯誤descript [#1089-不正確的前綴鍵在嘗試在表中創建一個prefix鍵時會出現。前綴鍵旨在索引字符串列的特定前綴長度長度,可以更快地搜索這些前綴。 了解prefix keys `這將在整個Movie_ID列上創建標準主鍵。主密鑰對於唯一識...
    程式設計 發佈於2025-05-02
  • 如何實時捕獲和流媒體以進行聊天機器人命令執行?
    如何實時捕獲和流媒體以進行聊天機器人命令執行?
    在開發能夠執行命令的chatbots的領域中,實時從命令執行實時捕獲Stdout,一個常見的需求是能夠檢索和顯示標準輸出(stdout)在cath cath cant cant cant cant cant cant cant cant interfaces in Chate cant inter...
    程式設計 發佈於2025-05-02
  • 如何在其容器中為DIV創建平滑的左右CSS動畫?
    如何在其容器中為DIV創建平滑的左右CSS動畫?
    通用CSS動畫,用於左右運動 ,我們將探索創建一個通用的CSS動畫,以向左和右移動DIV,從而到達其容器的邊緣。該動畫可以應用於具有絕對定位的任何div,無論其未知長度如何。 問題:使用左直接導致瞬時消失 更加流暢的解決方案:混合轉換和左 [並實現平穩的,線性的運動,我們介紹了線性的轉換。...
    程式設計 發佈於2025-05-02
  • 如何解決AppEngine中“無法猜測文件類型,使用application/octet-stream...”錯誤?
    如何解決AppEngine中“無法猜測文件類型,使用application/octet-stream...”錯誤?
    appEngine靜態文件mime type override ,靜態文件處理程序有時可以覆蓋正確的mime類型,在錯誤消息中導致錯誤消息:“無法猜測mimeType for for file for file for [File]。 application/application/octet...
    程式設計 發佈於2025-05-02
  • 如何使用Python理解有效地創建字典?
    如何使用Python理解有效地創建字典?
    在python中,詞典綜合提供了一種生成新詞典的簡潔方法。儘管它們與列表綜合相似,但存在一些顯著差異。 與問題所暗示的不同,您無法為鑰匙創建字典理解。您必須明確指定鍵和值。 For example:d = {n: n**2 for n in range(5)}This creates a dict...
    程式設計 發佈於2025-05-02
  • eval()vs. ast.literal_eval():對於用戶輸入,哪個Python函數更安全?
    eval()vs. ast.literal_eval():對於用戶輸入,哪個Python函數更安全?
    稱量()和ast.literal_eval()中的Python Security 在使用用戶輸入時,必須優先確保安全性。強大的python功能eval()通常是作為潛在解決方案而出現的,但擔心其潛在風險。 This article delves into the differences betwee...
    程式設計 發佈於2025-05-02
  • 如何將來自三個MySQL表的數據組合到新表中?
    如何將來自三個MySQL表的數據組合到新表中?
    mysql:從三個表和列的新表創建新表 答案:為了實現這一目標,您可以利用一個3-way Join。 選擇p。 *,d.content作為年齡 來自人為p的人 加入d.person_id = p.id上的d的詳細信息 加入T.Id = d.detail_id的分類法 其中t.taxonomy ...
    程式設計 發佈於2025-05-02
  • 可以在純CS中將多個粘性元素彼此堆疊在一起嗎?
    可以在純CS中將多個粘性元素彼此堆疊在一起嗎?
    [2这里: https://webthemez.com/demo/sticky-multi-header-scroll/index.html </main> <section> { display:grid; grid-template-...
    程式設計 發佈於2025-05-02
  • Python元類工作原理及類創建與定制
    Python元類工作原理及類創建與定制
    python中的metaclasses是什麼? Metaclasses負責在Python中創建類對象。就像類創建實例一樣,元類也創建類。他們提供了對類創建過程的控制層,允許自定義類行為和屬性。 在Python中理解類作為對象的概念,類是描述用於創建新實例或對象的藍圖的對象。這意味著類本身是使用...
    程式設計 發佈於2025-05-02

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3