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

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

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

在接受 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]刪除
最新教學 更多>
  • 如何在GO中有效初始化數組,類似於C ++的Memset?
    如何在GO中有效初始化數組,類似於C ++的Memset?
    在go中有等效的memset嗎? 在C中,MEMSET函數允許具有特定值的數組的有效初始化。在GO中,儘管沒有直接等效的詞,但幾種技術可以實現相似的結果。 最簡單的方法是使用循環來設置每個元素對所需值的數組。 = v } } repoyed copy() int,v int){ ...
    程式設計 發佈於2025-02-06
  • 為什麼使用固定定位時,為什麼具有100%網格板柱的網格超越身體?
    為什麼使用固定定位時,為什麼具有100%網格板柱的網格超越身體?
    網格超過身體,用100%grid-template-columns 問題:考慮以下CSS和HTML: position:fixed ; grid-template-columns:40%60%; grid-gap:5px; 背景: #eee; 當位置未固定時,網格將正確顯示。但是...
    程式設計 發佈於2025-02-06
  • React中的異步使用效應功能是否需要清理功能?
    React中的異步使用效應功能是否需要清理功能?
    async functions for async functions:導航清理困境在將useeffect hook與async函數中使用時,開發人員可能會遇到以下以下的訪問警告:此警告源於在組件未填充時清理async函數使用的資源的需求。沒有清理功能,在刪除組件後可能會繼續進行長期運行的異步任...
    程式設計 發佈於2025-02-06
  • 如何在Java列表中有效計算元素的發生?
    如何在Java列表中有效計算元素的發生?
    計數列表中的元素出現在列表 中,在java編程中,列舉列表中列舉元素出現的任務來自列表。為此,收集框架提供了全面的工具套件。 在這種情況下,Batocurrences變量將保持值3,代表動物列表中的“ BAT”出現的數量。 &&& [此方法是簡單的,可以得出準確的結果,使其成為計算列表中元素出現的...
    程式設計 發佈於2025-02-06
  • 深副本與淺副本與Java中的克隆:有什麼區別,我什麼時候應該使用?
    深副本與淺副本與Java中的克隆:有什麼區別,我什麼時候應該使用?
    複製值與復制對象在討論複製類型之前,對於區分 copy values 和複製對象: 複製一個值:複製參考類型的值涉及分配對象引用,類似於復制integer。 && && && && &&&華複製一個對象:創建一個具有自己身份的新對象,涉及使用“新”顯式或隱式。對象的深拷貝 淺複製:一個新對象的值與...
    程式設計 發佈於2025-02-06
  • JavaScript的伴侶
    JavaScript的伴侶
    [2 了解JavaScript承諾 承諾是JavaScript中的一個強大功能,可以簡化處理異步操作的處理。它們提供了一種更清潔,更直觀的方式來處理異步代碼,避免了諸如“回調地獄”之類的問題。 什麼是諾言? 是一個代表異步操作的最終完成(或失敗)及其結果值的對象。它使...
    程式設計 發佈於2025-02-06
  • 如何在整個HTML文檔中設計特定元素類型的第一個實例?
    如何在整個HTML文檔中設計特定元素類型的第一個實例?
    [2單獨使用CSS,整個HTML文檔可能是一個挑戰。 the:第一型偽級僅限於與其父元素中類型的第一個元素匹配。 以下CSS將使用添加的類樣式的第一個段落: }
    程式設計 發佈於2025-02-06
  • 如何使用Flexbox將元素與容器的底部對齊?
    如何使用Flexbox將元素與容器的底部對齊?
    在提供的方案中使用FlexBox 在提供的方案中,您有一個帶有各種子元素的div容器。您的目的是實現一個佈局,而元素垂直堆疊,無論文本的高度如何。 flexbox通過自動保證金提供了解決此問題的解決方案。自動利潤率使剩餘空間在對齊之前的元素中分佈到具有自動邊緣的元素。實現所需佈局的一種方法是使用...
    程式設計 發佈於2025-02-06
  • 如何精確測量.NET中的方法執行時間?
    如何精確測量.NET中的方法執行時間?
    .NET方法執行時間的精確計算 引言: 確定方法的執行時間對於性能優化至關重要。有多種方法可以測量此指標,每種方法都有其優點和缺點。 最佳方法:Stopwatch .NET 中的Stopwatch功能專門用於測量執行時間,被認為是最準確和最直接的方法。使用方法如下: var watch = Sy...
    程式設計 發佈於2025-02-06
  • 如何使用char_length()在mySQL中按字符串長度對數據進行排序?
    如何使用char_length()在mySQL中按字符串長度對數據進行排序?
    [2使用內置的char_length()function。 char_length()和length() 此查詢將從指定的表中檢索所有行,並基於上升順序對它們進行排序指定列的字符長度。帶有更長字符串的行將出現在結果的底部。
    程式設計 發佈於2025-02-06
  • 如何使用Python的記錄模塊實現自定義處理?
    如何使用Python的記錄模塊實現自定義處理?
    使用Python的Loggging Module 確保正確處理和登錄對於疑慮和維護的穩定性至關重要Python應用程序。儘管手動捕獲和記錄異常是一種可行的方法,但它可能乏味且容易出錯。 解決此問題,Python允許您覆蓋默認的異常處理機制,並將其重定向為登錄模塊。這提供了一種方便而係統的方法來捕獲...
    程式設計 發佈於2025-02-06
  • 哪種哈希算法最適合PHP中的安全密碼存儲?
    哪種哈希算法最適合PHP中的安全密碼存儲?
    安全密碼存儲:SHA1 vs MD5 VS SHA256 vs bcrypt bcrypt:首選選擇 通過password_hash()函數: //創建哈希 $ hash = password_hash($ password,password_default,['cost'=> ...
    程式設計 發佈於2025-02-06
  • 如何使用不同數量列的聯合數據庫表?
    如何使用不同數量列的聯合數據庫表?
    合併列數不同的表 當嘗試合併列數不同的數據庫表時,可能會遇到挑戰。一種直接的方法是在列數較少的表中,為缺失的列追加空值。 例如,考慮兩個表,表 A 和表 B,其中表 A 的列數多於表 B。為了合併這些表,同時處理表 B 中缺失的列,請按照以下步驟操作: 確定表 B 中缺失的列,並將它們添加到表的...
    程式設計 發佈於2025-02-06
  • 如何使用shell_exec()從php執行mySQL *.sql文件?
    如何使用shell_exec()從php執行mySQL *.sql文件?
    在PHP 中執行mysql *.sql文件時,在創建網站數據庫時,您可能會遇到需要執行的方案。 SQL文件從PHP到自動化站點生成。雖然zend_framework可能是有益的,但由於SQL語句中的不一致而直接運行。推薦的方法是使用Shell_exec()調用MySQL工具以執行您的 *.sql腳...
    程式設計 發佈於2025-02-06
  • 為什麼C#沒有用於IEnumerable的for Extension方法?
    為什麼C#沒有用於IEnumerable的for Extension方法?
    [2 [2 最近關於C#缺乏擴展方法的擴展方法] 界面? 有趣的是,只有 list 包括此功能。 [2 這是遺漏的性能優化嗎?還是有更深的根本原因? 幾種理論試圖解釋這一明顯的差距。 [2 一個觀點表明,C#的內置 [2 { item.dosomething(); } 這與擴展...
    程式設計 發佈於2025-02-06

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

Copyright© 2022 湘ICP备2022001581号-3