Activació d'un modal amb recompte de classes actius en una taula
És possible que vulgueu aplicar un comportament personalitzat en funció del contingut de cada cel·la quan treballeu Taules HTML. Per exemple, podeu utilitzar patrons o criteris específics per assignar classes dinàmicament a les cel·les de la taula. Com a resultat, la vostra taula pot ser més útil i atractiva.
En aquest exemple, les cel·les de la taula que compleixen determinats requisits tindran una classe anomenada actiu afegits a ells. A JavaScript La funció que examina cada cel·la, verifica el seu contingut i després aplica la classe adequadament s'utilitza per fer-ho. És un mètode productiu per organitzar cèl·lules particulars segons les seves dades.
Després d'aplicar el actiu classe a un subconjunt de cel·les, comptar el nombre de cel·les que tenen aquesta classe podria ser un pas següent freqüent. Si voleu iniciar un esdeveniment o acció, com obrir un modal que mostri el recompte, comptar aquestes cel·les pot ser molt útil.
Aquest tutorial us ensenyarà com utilitzar JavaScript per comptar el nombre de cel·les que tenen actiu classe i per llançar automàticament un modal que mostra el recompte. Utilitzant jQuery, la solució és senzilla, eficient i senzilla d'implementar.
Comandament | Exemple d'ús | |
---|---|---|
.each() | Cada element d'un conjunt d'elements coincidents és repetit per aquesta funció jQuery. Aplica lògica o classes condicionals iterant sobre cada cel·la de la taula ( | ) in our example. |
addClass() | The selected items receive one or more class names added to them by this jQuery method. The script applies the actiu o cap classe a cel·les segons el seu contingut. | |
.dialog() | 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. | |
.text() | 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 | la cel·la coincideix amb un patró determinat. |
RegExp() | Les expressions regulars es fan amb aquest constructor de JavaScript. El guió pot assignar classes en funció del contingut mitjançant la identificació de patrons com ara números seguits de majúscules o c seguit de dígits. | |
classList.add() | Aquesta tècnica bàsica de JavaScript dóna a un element una classe particular. Funciona de manera similar a addClass() de jQuery a la solució JavaScript de vainilla, afegint el actiu o cap classe en funció de les condicions. | |
DOMContentLoaded | Quan s'ha acabat de carregar i analitzar el document HTML, s'activa l'esdeveniment DOMContentLoaded. A l'exemple de JavaScript de vainilla, s'assegura que l'script s'executa després que el DOM s'hagi acabat de carregar. | |
querySelectorAll() | Cada element del document que coincideix amb el selector CSS donat és retornat per aquesta funció JavaScript. A l'exemple bàsic de JavaScript, s'utilitza per triar-ne tots | element in the table for further processing. |
per cada() | 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. |
Entendre el guió: comptar cel·les i activar un modal
En el primer exemple d'script, cada cel·la de la taula s'itera, s'avalua el seu contingut i s'assigna una classe en funció de l'avaluació utilitzant jQuery. Aquesta característica és possible mitjançant la iteració de cadascun dels elements
Amb el RegExp() constructor, es construeix una expressió regular per fer coincidir números seguits de lletres. Aquesta tècnica assegura que les cel·les amb dades, com ara "1A" o "3C", es reconeixen i s'etiqueten amb la classe actual. La cel·la rep una classe separada anomenada cap si el contingut coincideix amb un patró diferent, com "c" seguida d'un número. Això permet classificar les dades de la taula amb més precisió. A més, el addClass() El mètode garanteix que les cel·les poden afegir aquestes classes sense eliminar cap classe que ja tinguin.
El següent pas és comptar les cel·les adequades i iniciar un modal després que totes hagin estat etiquetades amb la classe activa. Cada vegada que una cel·la obté la classe activa, el recompte s'incrementa i es guarda en una variable anomenada compte actiu. El nombre de cel·les qualificatives de la taula s'ha de determinar mitjançant aquest recompte. Utilitzant el .dialog() funció de la interfície d'usuari de jQuery, es genera un modal quan finalitza el recompte. El autoOpen: cert L'atribut permet que el modal s'obri automàticament. El nombre de cel·les actives es mostra dins del modal.
En el segon cas, s'utilitza JavaScript vainilla per duplicar el procediment idèntic. querySelectorAll() s'utilitza en lloc de jQuery en aquest enfocament per seleccionar totes les cel·les de la taula, i una manera senzilla per cada() el bucle itera per cada cel·la. Les expressions regulars s'utilitzen per fer coincidir el contingut de la cel·la, igual que a la solució jQuery. Si es descobreix una coincidència, l'activeCount s'actualitza i la classe activa s'afegeix mitjançant l' classList.add() mètode. En última instància, alterar l'HTML intern d'un element modal predefinit al DOM activa el modal. El mateix resultat que l'exemple de jQuery s'aconsegueix amb aquesta solució, que no depèn de biblioteques externes.
Comptar cel·les amb una classe específica i activar un modal
Aquest mètode compta els elements que tenen una classe determinada i els assigna classes dinàmicament jQuery. Aleshores obre una finestra modal.
$(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); } });
});
Alternativa: utilitzar JavaScript de Vanilla per comptar cèl·lules actives
En lloc de confiar en biblioteques de tercers com jQuery, aquesta solució afegeix una classe i compta les cel·les utilitzant JavaScript pur.
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;
});
Enfocament de backend: utilitzant Node.js i Express amb plantilles EJS
Això Node.js exemples d'usos Plantilla EJS per representar el recompte de cel·les en una finestra modal mentre es comptabilitzen les cel·les del costat del servidor.
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'));
Proves d'unitat amb Jest per a la solució de fons
Aquí, desenvolupem proves unitàries per a la solució Node.js utilitzant Broma per fer que la lògica de recompte actiu funcioni com es pretén.
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);
});
Ampliació de la selecció de cel·les i el maneig de classes en JavaScript
Treballant amb JavaScript i Taules HTML també implica la capacitat de modificar dinàmicament les classes en resposta a l'entrada o contingut de l'usuari. Podeu fer més que comptar les cel·les; també podeu gestionar les entrades dels usuaris i canviar instantàniament el contingut de la taula. Per exemple, utilitzant mètodes com removeClass() en jQuery o classList.remove() a JavaScript vainilla, podeu modificar dinàmicament la classe, ressaltar-la o fins i tot eliminar-la quan un usuari fa clic a una cel·la de la taula. Com a resultat, les taules es tornen considerablement més interactives i és possible una personalització addicional basada en actualitzacions del contingut en temps real.
Una taula que mostri dades en temps real on les cel·les específiques s'han de separar visualment en funció d'un canvi de classe seria un cas d'ús útil per a això. És senzill enllaçar les funcions que provoquen aquestes modificacions mitjançant l'ús d'escoltes d'esdeveniments. En JavaScript, per exemple, podeu utilitzar addEventListener() per escoltar esdeveniments en cel·les concretes, com ara clics o pressions de tecles. Modificacions addicionals de classe o fins i tot actualitzacions a un comptador que reflecteixi el nombre de actiu cel·les de la taula poden resultar d'aquesta interacció.
També podeu pensar en situacions en què les cel·les s'han d'actualitzar automàticament sense cap intervenció de l'usuari. El contingut de la taula es pot actualitzar i controlar contínuament mitjançant un interval o trucades AJAX. Expressions regulars i mètodes com ara setInterval() permetre que la taula canviï automàticament les seves classes i iniciï un modal quan s'arribi a un llindar. Les taules ara es poden utilitzar en aplicacions més dinàmiques, com ara taulers i configuracions basades en dades.
Preguntes freqüents sobre el maneig de classes de JavaScript i el recompte de cèl·lules
- A JavaScript de vainilla, com puc comptar els components que pertanyen a una classe concreta?
- Per seleccionar tots els elements amb aquesta classe, utilitzeu document.querySelectorAll('.className'); per comptar-los, utilitzar length.
- Segons el contingut de la cel·la de la taula, com puc afegir-hi una classe?
- Podeu aplicar una classe utilitzant classList.add() i inspeccionar el contingut d'una cel·la utilitzant textContent o innerText propietats.
- El que distingeix text() en JavaScript de vainilla de textContent en jQuery?
- textContent és una propietat nativa de JavaScript i text() és un mètode jQuery que recupera o modifica el contingut dels elements seleccionats.
- En comptar cel·les que pertanyen a una classe concreta, com puc iniciar un modal?
- Per construir un modal a jQuery i fer-lo activar depenent del nombre d'elements amb una classe en particular, utilitzeu .dialog().
- A JavaScript, com puc treure una classe d'un element?
- En JavaScript de vainilla, podeu utilitzar classList.remove('className') per eliminar una classe d'un element.
Reflexions finals sobre recompte de cèl·lules i modalitats
JavaScript o jQuery es poden utilitzar per gestionar el recompte de cel·les amb una classe especificada, com ara actiu, d'una manera eficaç. Les expressions regulars són una eina útil per identificar patrons en el contingut de la taula, cosa que facilita les tasques dinàmiques de classe i altres interaccions.
A més, un mètode útil per informar els usuaris de l'estat d'una taula és iniciar un modal basat en el nombre d'aquestes cel·les actives. El .dialog() La funció a jQuery o un modal personalitzat són dos mètodes que proporcionen una gran versatilitat quan es tracta de gestionar el contingut de la taula.
Fonts i referències
- La informació sobre com afegir classes de manera dinàmica i gestionar contingut mitjançant JavaScript i jQuery es va obtenir d'una guia detallada disponible a Documentació de l'API de jQuery .
- La informació sobre l'ús d'expressions regulars en JavaScript per manipular el contingut es va fer referència a la documentació que es troba a MDN Web Docs .
- La creació modal mitjançant el mètode jQuery UI Dialog i el seu ús detallat es poden explorar a Documentació del diàleg de la interfície d'usuari de jQuery .
- La importància de comptar elements amb classes específiques en JavaScript i exemples pràctics es poden revisar en articles com Guia de JavaScript de FreeCodeCamp .