Cum să utilizați o anumită clasă în JavaScript pentru a număra celulele tabelului

Active

Declanșarea unui modal cu numărarea claselor active într-un tabel

Poate doriți să aplicați un comportament personalizat bazat pe conținutul fiecărei celule atunci când lucrați cu . De exemplu, puteți utiliza modele sau criterii specifice pentru a atribui în mod dinamic clase celulelor tabelului. Ca rezultat, masa dvs. poate deveni mai utilă și mai interesantă.

În acest exemplu, celulele de tabel care îndeplinesc anumite cerințe vor avea o clasă numită adăugate acestora. O Funcția care examinează fiecare celulă, verifică conținutul acesteia și apoi aplică clasa în mod corespunzător este utilizată pentru a face acest lucru. Este o metodă productivă de organizare a anumitor celule în funcție de datele lor.

După aplicarea clasă la un subset de celule, numărarea numărului de celule care au această clasă ar putea fi un pas următor frecvent. Dacă doriți să începeți un eveniment sau o acțiune, o astfel de deschidere a unui mod care arată numărul, numărarea acestor celule poate fi destul de utilă.

Acest tutorial vă va învăța cum să utilizați JavaScript pentru a număra numărul de celule care au clasă și pentru a lansa automat un modal care arată numărul. Folosind , soluția este simplă, eficientă și simplu de implementat.

Comanda Exemplu de utilizare
.each() Fiecare element dintr-un set de elemente potrivite este repetat de această funcție jQuery. Se aplică logica condițională sau clase, iterând peste fiecare celulă de tabel () in our example.
addClass() The selected items receive one or more class names added to them by this jQuery method. The script applies the sau clasa la celule în funcție de conținutul lor.
.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 celula se potrivește cu un anumit model.
RegExp() Expresiile regulate sunt realizate cu acest constructor JavaScript. Scriptul poate atribui clase pe baza conținutului identificând modele, cum ar fi sau .
classList.add() Această tehnică JavaScript de bază oferă unui element o anumită clasă. Funcționează în mod similar cu addClass() de la jQuery în soluția JavaScript vanilla, adăugând sau clasa in functie de conditii.
DOMContentLoaded Când documentul HTML s-a terminat de încărcat și de analizat, este declanșat evenimentul DOMContentLoaded. În exemplul vanilla JavaScript, se asigură că scriptul se execută după ce DOM-ul a terminat de încărcat.
querySelectorAll() Fiecare element din document care se potrivește cu selectorul CSS dat este returnat de această funcție JavaScript. În exemplul de bază JavaScript, este utilizat pentru a alege fiecare element in the table for further processing.
pentru fiecare() 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.

Înțelegerea scriptului: numărarea celulelor și declanșarea unui modal

În primul exemplu de script, fiecare celulă de tabel este iterată, conținutul ei este evaluat și o clasă este atribuită în funcție de evaluare folosind . Această caracteristică este posibilă prin iterarea fiecăruia dintre

elementele din tabel folosind metodă. Expresiile regulate sunt folosite pentru a aplica două verificări condiționale în interiorul acestei bucle. Aceste modele stabilesc dacă conținutul fiecărei celule aderă la un anumit format. Celula câștigă clasa dacă conținutul urmează un model, cum ar fi un număr și o literă majusculă. Pentru ca celulele să fie clasificate dinamic, acest lucru este esențial.

Cu constructor, se construiește o expresie regulată pentru potrivirea numerelor urmate de litere. Această tehnică se asigură că celulele cu date, cum ar fi „1A” sau „3C”, sunt recunoscute și etichetate cu clasa curentă. Celula primește o clasă separată numită dacă conținutul se potrivește cu un model diferit, astfel de „c” urmat de un număr. Acest lucru face posibilă clasificarea mai precisă a datelor din tabel. În plus, cel metoda garantează că celulele pot avea aceste clase adăugate fără a șterge nicio clasă pe care le-ar putea avea deja.

Următorul pas este să numărați celulele corespunzătoare și să inițiați un modal după ce toate au fost etichetate cu clasa activă. De fiecare dată când o celulă obține clasa activă, numărul este incrementat și salvat într-o variabilă numită . Numărul de celule de calificare din tabel trebuie să fie determinat folosind acest număr. Folosind funcția din jQuery UI, un modal este generat când contorizarea este terminată. The Atributul permite modalului să se deschidă automat. Numărul de celule active este afișat în interiorul modalului.

În cel de-al doilea caz, JavaScript este folosit pentru a duplica procedura identică. este folosit în locul jQuery în această abordare pentru a selecta toate celulele tabelului și o simplă bucla iterează prin fiecare celulă. Expresiile regulate sunt utilizate pentru a se potrivi cu conținutul celulei, la fel ca în soluția jQuery. Dacă este descoperită o potrivire, activeCount este actualizat și clasa activă este adăugată utilizând metodă. În cele din urmă, modificarea HTML-ului intern al unui element modal predefinit în DOM activează modalul. Același rezultat ca exemplul jQuery este obținut folosind această soluție, care nu se bazează pe biblioteci externe.

Numărarea celulelor cu o clasă specifică și declanșarea unui modal

Această metodă numără elementele care au o clasă dată și le atribuie în mod dinamic clase folosind . Apoi deschide o fereastră 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); } });
});

Alternativă: Utilizarea JavaScript Vanilla pentru a număra celulele active

În loc să se bazeze pe biblioteci terțe precum jQuery, această soluție adaugă o clasă și numără celulele folosind .

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;
});

Abordare backend: Utilizarea Node.js și Express cu șabloane EJS

Acest exemple de utilizări pentru a reda numărul de celule într-o fereastră modală în timp ce se numără celulele pe partea serverului.

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'));

Testare unitară cu Jest pentru soluția de backend

Aici, dezvoltăm teste unitare pentru soluția Node.js folosind pentru a face ca logica de numărare activă să funcționeze conform intenției.

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);
});

Extinderea selecției celulelor și gestionării claselor în JavaScript

Lucrul cu şi implică, de asemenea, capacitatea de a modifica dinamic clasele ca răspuns la intrarea utilizatorului sau la conținut. Puteți face mai mult decât să numărați celulele; de asemenea, puteți gestiona intrările utilizatorilor și puteți schimba instantaneu conținutul tabelului. De exemplu, folosind metode precum în jQuery sau classList.remove() în JavaScript vanilla, puteți modifica în mod dinamic clasa, evidențiați sau chiar eliminați clasa atunci când un utilizator face clic pe o celulă de tabel. Ca rezultat, tabelele devin considerabil mai interactive și este posibilă o personalizare suplimentară bazată pe actualizări ale conținutului în timp real.

Un tabel care afișează date în timp real în care anumite celule trebuie separate vizual în funcție de o schimbare de clasă ar fi un caz de utilizare util pentru aceasta. Este simplu să legați funcțiile care provoacă aceste modificări utilizând ascultători de evenimente. În JavaScript, de exemplu, puteți utiliza pentru a asculta evenimente pe anumite celule, cum ar fi clicuri sau apăsări de taste. Modificări suplimentare de clasă sau chiar actualizări ale unui contor care reflectă numărul de celulele din tabel pot rezulta din această interacțiune.

De asemenea, vă puteți gândi la situații în care celulele ar trebui să se actualizeze automat fără nicio intervenție din partea utilizatorului. Conținutul tabelului poate fi actualizat și monitorizat continuu printr-un interval sau apeluri AJAX. Expresii regulate și metode precum permiteți tabelului să-și schimbe automat clasele și să lanseze un modal atunci când este atins un prag. Tabelele pot fi acum utilizate în aplicații mai dinamice, cum ar fi tablourile de bord și setările bazate pe date.

  1. În JavaScript vanilla, cum pot număra componentele care aparțin unei anumite clase?
  2. Pentru a selecta fiecare element cu acea clasă, utilizați ; a le număra, folosește .
  3. Pe baza conținutului celulei tabelului, cum pot adăuga o clasă la aceasta?
  4. Puteți aplica o clasă folosind și inspectați conținutul unei celule folosind sau proprietăți.
  5. Ceea ce distinge în vanilie JavaScript din în jQuery?
  6. este o proprietate JavaScript nativă și este o metodă jQuery care preia sau modifică conținutul elementelor selectate.
  7. Când număr celulele care aparțin unei anumite clase, cum pot începe un modal?
  8. Pentru a construi un modal în jQuery și a-l declanșa în funcție de numărul de elemente cu o anumită clasă, utilizați .
  9. În JavaScript, cum pot scoate o clasă dintr-un element?
  10. În JavaScript vanilla, puteți utiliza pentru a elimina o clasă dintr-un element.

JavaScript sau jQuery pot fi folosite pentru a gestiona numărarea celulelor cu o clasă specificată, cum ar fi , într-o manieră eficientă. Expresiile regulate sunt un instrument util pentru identificarea tiparelor din conținutul tabelului, ceea ce facilitează atribuirea dinamică a clasei și alte interacțiuni.

Mai mult, o metodă utilă de informare a utilizatorilor despre starea unui tabel este să inițieze un modal bazat pe numărul acestor celule active. The funcția în jQuery sau un modal personalizat sunt două metode care oferă o mare versatilitate atunci când vine vorba de gestionarea conținutului tabelului.

  1. Informațiile despre adăugarea dinamică a claselor și gestionarea conținutului folosind JavaScript și jQuery au fost obținute dintr-un ghid detaliat disponibil la Documentația API jQuery .
  2. Informații despre utilizarea expresiilor regulate în JavaScript pentru a manipula conținutul au fost făcute referințe din documentația găsită la MDN Web Docs .
  3. Crearea modală folosind metoda jQuery UI Dialog și utilizarea sa detaliată pot fi explorate la Documentație de dialog jQuery UI .
  4. Importanța numărării elementelor cu clase specifice în JavaScript și exemple practice poate fi revizuită în articole precum Ghid JavaScript FreeCodeCamp .