”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > JavaScript- 按住 Shift 可以选中多个复选框!

JavaScript- 按住 Shift 可以选中多个复选框!

发布于2024-07-30
浏览:341

在接受 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]删除
最新教程 更多>
  • 如何在JavaScript对象中动态设置键?
    如何在JavaScript对象中动态设置键?
    在尝试为JavaScript对象创建动态键时,如何使用此Syntax jsObj['key' i] = 'example' 1;不工作。正确的方法采用方括号: jsobj ['key''i] ='example'1; 在JavaScript中,数组是一...
    编程 发布于2025-04-05
  • 如何从Google API中检索最新的jQuery库?
    如何从Google API中检索最新的jQuery库?
    从Google APIS 问题中提供的jQuery URL是版本1.2.6。对于检索最新版本,以前有一种使用特定版本编号的替代方法,它是使用以下语法:获取最新版本:未压缩)While these legacy URLs still remain in use, it is recommended ...
    编程 发布于2025-04-05
  • 如何将多种用户类型(学生,老师和管理员)重定向到Firebase应用中的各自活动?
    如何将多种用户类型(学生,老师和管理员)重定向到Firebase应用中的各自活动?
    Red: How to Redirect Multiple User Types to Respective ActivitiesUnderstanding the ProblemIn a Firebase-based voting app with three distinct user type...
    编程 发布于2025-04-05
  • 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-04-05
  • 为什么我在Silverlight Linq查询中获得“无法找到查询模式的实现”错误?
    为什么我在Silverlight Linq查询中获得“无法找到查询模式的实现”错误?
    查询模式实现缺失:解决“无法找到”错误在Silverlight应用程序中,尝试使用LINQ建立LINQ连接以错误而实现的数据库”,无法找到查询模式的实现。”当省略LINQ名称空间或查询类型缺少IEnumerable 实现时,通常会发生此错误。 解决问题来验证该类型的质量是至关重要的。在此特定实例中...
    编程 发布于2025-04-05
  • 为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    在Microsoft Visual C 中,Microsoft consions用户strate strate strate strate strate strate strate strate strate strate strate strate strate strate strate st...
    编程 发布于2025-04-05
  • 如何使用不同数量列的联合数据库表?
    如何使用不同数量列的联合数据库表?
    合并列数不同的表 当尝试合并列数不同的数据库表时,可能会遇到挑战。一种直接的方法是在列数较少的表中,为缺失的列追加空值。 例如,考虑两个表,表 A 和表 B,其中表 A 的列数多于表 B。为了合并这些表,同时处理表 B 中缺失的列,请按照以下步骤操作: 确定表 B 中缺失的列,并将它们添加到表的末...
    编程 发布于2025-04-05
  • Android如何向PHP服务器发送POST数据?
    Android如何向PHP服务器发送POST数据?
    在android apache httpclient(已弃用) httpclient httpclient = new defaulthttpclient(); httppost httppost = new httppost(“ http://www.yoursite.com/script.p...
    编程 发布于2025-04-05
  • 对象拟合:IE和Edge中的封面失败,如何修复?
    对象拟合:IE和Edge中的封面失败,如何修复?
    To resolve this issue, we employ a clever CSS solution that solves the problem:position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%)...
    编程 发布于2025-04-05
  • 如何有效地选择熊猫数据框中的列?
    如何有效地选择熊猫数据框中的列?
    在处理数据操作任务时,在Pandas DataFrames 中选择列时,选择特定列的必要条件是必要的。在Pandas中,选择列的各种选项。选项1:使用列名 如果已知列索引,请使用ILOC函数选择它们。请注意,python索引基于零。 df1 = df.iloc [:,0:2]#使用索引0和1 c...
    编程 发布于2025-04-05
  • 为什么我的CSS背景图像出现?
    为什么我的CSS背景图像出现?
    故障排除:CSS背景图像未出现 ,您的背景图像尽管遵循教程说明,但您的背景图像仍未加载。图像和样式表位于相同的目录中,但背景仍然是空白的白色帆布。而不是不弃用的,您已经使用了CSS样式: bockent {背景:封闭图像文件名:背景图:url(nickcage.jpg); 如果您的html,css...
    编程 发布于2025-04-05
  • 如何使用Python有效地以相反顺序读取大型文件?
    如何使用Python有效地以相反顺序读取大型文件?
    在python 中,如果您使用一个大文件,并且需要从最后一行读取其内容,则在第一行到第一行,Python的内置功能可能不合适。这是解决此任务的有效解决方案:反向行读取器生成器 == ord('\ n'): 缓冲区=缓冲区[:-1] ...
    编程 发布于2025-04-05
  • 在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在JTable中维护jtable单元格渲染后,在JTable中,在JTable中实现自定义单元格渲染和编辑功能可以增强用户体验。但是,至关重要的是要确保即使在编辑操作后也保留所需的格式。在设置用于格式化“价格”列的“价格”列,用户遇到的数字格式丢失的“价格”列的“价格”之后,问题在设置自定义单元格...
    编程 发布于2025-04-05
  • 如何在GO编译器中自定义编译优化?
    如何在GO编译器中自定义编译优化?
    在GO编译器中自定义编译优化 GO中的默认编译过程遵循特定的优化策略。 However, users may need to adjust these optimizations for specific requirements.Optimization Control in Go Compi...
    编程 发布于2025-04-05
  • 如何同步迭代并从PHP中的两个等级阵列打印值?
    如何同步迭代并从PHP中的两个等级阵列打印值?
    同步的迭代和打印值来自相同大小的两个数组使用两个数组相等大小的selectbox时,一个包含country代码的数组,另一个包含乡村代码,另一个包含其相应名称的数组,可能会因不当提供了exply for for for the uncore for the forsion for for ytry...
    编程 发布于2025-04-05

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3