使用表中的活动类计数触发模态
您可能希望在使用时根据每个单元格的内容应用自定义行为 HTML 表格。例如,您可以使用特定模式或条件将类动态分配给表格单元格。因此,您的表格可能会变得更有用、更有吸引力。
在此示例中,满足某些要求的表格单元格将具有一个名为 积极的 添加到他们。一个 JavaScript 用于检查每个单元格、验证其内容,然后适当应用该类的函数用于执行此操作。这是根据数据组织特定单元的有效方法。
应用后 积极的 对细胞子集进行分类,计算具有此类的细胞数量可能是下一步常见的步骤。如果您希望启动一个事件或操作,例如打开显示计数的模式,对这些单元格进行计数可能会非常有帮助。
本教程将教您如何使用 JavaScript 来计算具有 积极的 类并自动启动显示计数的模式。使用 jQuery,该解决方案简单、高效且易于实施。
命令 | 使用示例 | |
---|---|---|
.each() | 该 jQuery 函数会迭代一组匹配元素中的每个元素。它通过迭代每个表格单元格来应用条件逻辑或类( | ) in our example. |
添加类() | The selected items receive one or more class names added to them by this jQuery method. The script applies the 积极的 或者 没有任何 根据单元格的内容对单元格进行分类。 | |
。对话() | Used with jQuery UI to generate a modal dialog. When the script triggers the modal, the autoOpen: true option makes sure it opens automatically and shows the number of active items. | |
。文本() | The text content of the chosen components is retrieved or set using this technique. In this instance, it checks to see if the contents of every | 单元格匹配特定模式。 |
RegExp() | 正则表达式是用这个 JavaScript 构造函数创建的。该脚本可以通过识别模式来根据内容分配类别,例如 数字后跟大写字母 或者 c 后跟数字。 | |
classList.add() | 这种基本的 JavaScript 技术为元素提供了特定的类。它的功能与普通 JavaScript 解决方案中的 jQuery addClass() 类似,添加了 积极的 或者 没有任何 班级视情况而定。 | |
DOMContentLoaded | 当 HTML 文档完成加载和解析时,将触发 DOMContentLoaded 事件。在普通 JavaScript 示例中,它确保脚本在 DOM 加载完成后执行。 | |
querySelectorAll() | 此 JavaScript 函数返回文档中与给定 CSS 选择器匹配的每个元素。在基本的 JavaScript 示例中,它用于选择每个 | element in the table for further processing. |
forEach() | An array method in JavaScript that lets you iterate over elements. Here, it's utilized to iterate over every table cell that querySelectorAll() returned and apply the required logic to each one. |
了解脚本:计算单元格并触发模态
在第一个脚本示例中,迭代每个表格单元格,评估其内容,并根据使用的评估分配一个类 jQuery。该功能是通过迭代每个
随着 正则表达式() 构造函数,构造一个匹配数字后跟字母的正则表达式。此技术可确保包含数据(例如“1A”或“3C”)的单元格被识别并标记为当前类别。该单元接收一个单独的类,称为 没有任何 如果内容匹配不同的模式,例如“c”后跟一个数字。这使得可以更精确地对表中的数据进行分类。此外, 添加类() 方法保证单元可以添加这些类,而无需删除它们可能已经拥有的任何类。
下一步是计算适当的单元格数量,并在它们全部被标记为活动类后启动模式。每次单元格获得活动类时,计数都会增加并保存在名为的变量中 活动计数。必须使用此计数来确定表中合格单元格的数量。使用 。对话() jQuery UI 中的函数,计数完成后会生成一个模态。这 自动打开:真 属性允许模式自动打开。活动单元格的数量显示在模式内部。
在第二种情况下,使用普通 JavaScript 来复制相同的过程。 查询选择器全部() 在这种方法中使用 jQuery 来选择所有表格单元格,并且一个简单的 forEach() 循环遍历每个单元格。正则表达式用于匹配单元格内容,就像 jQuery 解决方案中一样。如果发现匹配,则更新 activeCount 并使用以下命令添加活动类 类列表.add() 方法。最终,更改 DOM 中预定义模态元素的内部 HTML 会激活模态。使用此解决方案实现了与 jQuery 示例相同的结果,该解决方案不依赖于外部库。
对特定类别的单元格进行计数并触发模态
此方法对具有给定类别的项目进行计数,并使用以下方法动态为其分配类别 jQuery。然后它会打开一个模式窗口。
$(document).ready(function() {
var activeCount = 0;
$('td').each(function() {
var $this = $(this);
if ($this.text().match(new RegExp(/[0-9][A-Z]/)) !== null) {
$this.addClass('active');
activeCount++;
}
if ($this.text().match(new RegExp(/c[0-9]/)) !== null) {
$this.addClass('none');
}
});
// Trigger the modal with the count of 'active' items
$('#myModal').dialog({ autoOpen: true, modal: true, title: 'Active Count',
open: function() { $(this).html('Number of active items: ' + activeCount); } });
});
替代方案:使用 Vanilla JavaScript 计算活动单元格数量
该解决方案不依赖 jQuery 等第三方库,而是添加一个类并使用 纯JavaScript。
document.addEventListener('DOMContentLoaded', function() {
var cells = document.querySelectorAll('td');
var activeCount = 0;
cells.forEach(function(cell) {
if (/[0-9][A-Z]/.test(cell.textContent)) {
cell.classList.add('active');
activeCount++;
} else if (/c[0-9]/.test(cell.textContent)) {
cell.classList.add('none');
}
});
// Open the modal to display the count
var modal = document.getElementById('myModal');
modal.style.display = 'block';
modal.innerHTML = 'Number of active items: ' + activeCount;
});
后端方法:将 Node.js 和 Express 与 EJS 模板结合使用
这 Node.js 示例用途 EJS 模板 在模式窗口中呈现单元格计数,同时对服务器端的单元格进行计数。
const express = require('express');
const app = express();
app.set('view engine', 'ejs');
app.get('/', (req, res) => {
const tableData = [['1A', '2B', '3C'], ['c1', '4D', '5E']];
let activeCount = 0;
tableData.forEach(row => {
row.forEach(cell => {
if (/[0-9][A-Z]/.test(cell)) {
activeCount++;
}
});
});
res.render('index', { activeCount });
});
app.listen(3000, () => console.log('Server running on port 3000'));
使用 Jest 对后端解决方案进行单元测试
在这里,我们使用 Node.js 解决方案开发单元测试 笑话 使活动计数逻辑按预期运行。
const { countActiveCells } = require('./countActive');
test('counts active cells correctly', () => {
const tableData = [['1A', '2B', '3C'], ['c1', '4D', '5E']];
expect(countActiveCells(tableData)).toBe(4);
});
test('returns zero if no active cells', () => {
const tableData = [['c1', 'c2', 'c3'], ['c4', 'c5', 'c6']];
expect(countActiveCells(tableData)).toBe(0);
});
在 JavaScript 中扩展单元格选择和类处理
与...一起工作 JavaScript 和 HTML 表格 还涉及动态修改类以响应用户输入或内容的能力。您可以做的不仅仅是计数细胞;还可以做更多的事情。您还可以处理用户输入并立即更改表的内容。例如,使用类似的方法 removeClass() 在 jQuery 中或 classList.remove() 在普通 JavaScript 中,当用户单击表格单元格时,您可以动态修改类、突出显示甚至删除类。因此,表格的交互性显着增强,并且可以根据内容的实时更新进行进一步的定制。
显示实时数据的表格,其中需要根据类更改在视觉上分隔特定单元格,这将是一个有用的用例。通过使用事件侦听器来绑定导致这些修改的函数很简单。例如,在 JavaScript 中,您可以使用 addEventListener() 侦听特定单元格上的事件,例如单击或按键。额外的类修改,甚至更新反映数量的计数器 积极的 表中的单元格可能是由这种相互作用产生的。
您还可以考虑单元格应自动更新而不需要用户任何输入的情况。表内容可以通过间隔或 AJAX 调用持续更新和监控。正则表达式和方法,例如 setInterval() 允许表自动更改其类别并在达到阈值时启动模式。表格现在可以用于更动态的应用程序,例如仪表板和数据驱动的设置。
有关 JavaScript 类处理和单元格计数的常见问题
- 在普通 JavaScript 中,如何计算属于特定类的组件?
- 要选择该类的每个元素,请使用 document.querySelectorAll('.className');要计算它们,请使用 length。
- 根据表格单元格的内容,如何向其添加类?
- 您可以使用以下方式申请课程 classList.add() 并使用检查单元格的内容 textContent 或者 innerText 特性。
- 有什么区别 text() 在普通 JavaScript 中来自 textContent 在 jQuery 中?
- textContent 是原生 JavaScript 属性,并且 text() 是一个 jQuery 方法,用于检索或修改所选元素的内容。
- 当计算属于特定类别的单元格时,如何启动模式?
- 要在 jQuery 中构造一个模式并让它根据特定类的项目数量触发,请使用 .dialog()。
- 在 JavaScript 中,如何从元素中取出类?
- 在普通 JavaScript 中,您可以使用 classList.remove('className') 从元素中删除类。
关于细胞计数和模态的最终想法
JavaScript 或 jQuery 可用于管理具有指定类的计数单元格,例如 积极的,以有效的方式。正则表达式是识别表内容模式的有用工具,有助于动态类分配和其他交互。
此外,通知用户表格状态的一种有用方法是根据这些活动单元格的数量启动模式。这 。对话() jQuery 中的函数或自定义模式是两种在处理表格内容时提供大量多功能性的方法。
来源和参考文献
- 有关使用 JavaScript 和 jQuery 动态添加类和处理内容的信息源自以下位置的详细指南: jQuery API 文档 。
- 有关在 JavaScript 中使用正则表达式来操作内容的见解可从位于以下位置的文档中引用: MDN 网络文档 。
- 使用 jQuery UI Dialog 方法创建模态框及其详细用法可以在以下位置探索 jQuery UI 对话框文档 。
- 在 JavaScript 中计算具有特定类的元素的重要性和实际示例可以在以下文章中回顾: FreeCodeCamp JavaScript 指南 。