Slik bruker du en bestemt klasse i JavaScript for å telle tabellceller

Active

Utløser en modal med aktiv klassetelling i en tabell

Det kan være lurt å bruke tilpasset oppførsel basert på innholdet i hver celle når du arbeider med . Du kan for eksempel bruke spesifikke mønstre eller kriterier for å dynamisk tilordne klasser til tabellceller. Bordet ditt kan bli mer nyttig og engasjerende som et resultat.

I dette eksemplet vil tabellceller som tilfredsstiller visse krav ha en klasse navngitt lagt til dem. EN funksjon som undersøker hver celle, verifiserer innholdet, og deretter bruker klassen riktig brukes til å gjøre dette. Det er en produktiv metode for å organisere bestemte celler i henhold til deres data.

Etter å ha brukt klasse til et undersett av celler, kan telle antall celler som har denne klassen være et hyppig neste trinn. Hvis du ønsker å starte en hendelse eller handling, slik åpning av en modal som viser antallet, kan telle disse cellene være ganske nyttig.

Denne opplæringen vil lære deg hvordan du bruker JavaScript til å telle antall celler som har klasse og for å automatisk starte en modal som viser tellingen. Bruker , er løsningen grei, effektiv og enkel å implementere.

Kommando Eksempel på bruk
.each() Hvert element i et sett med matchede elementer itereres over av denne jQuery-funksjonen. Den bruker betinget logikk eller klasser ved å iterere over hver tabellcelle () in our example.
addClass() The selected items receive one or more class names added to them by this jQuery method. The script applies the eller klasse til celler i henhold til innholdet deres.
.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.
.tekst() 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 celle samsvarer med et bestemt mønster.
RegExp() Vanlige uttrykk lages med denne JavaScript-konstruktøren. Skriptet kan tildele klasser basert på innhold ved å identifisere mønstre som f.eks eller .
classList.add() Denne grunnleggende JavaScript-teknikken gir et element en bestemt klasse. Den fungerer på samme måte som jQuerys addClass() i vanilla JavaScript-løsningen, og legger til eller klasse avhengig av forhold.
DOMContentLoaded Når HTML-dokumentet er ferdig lastet og analysert, utløses DOMContentLoaded-hendelsen. I vanilla JavaScript-eksemplet sørger det for at skriptet kjøres etter at DOM er ferdig lastet.
querySelectorAll() Hvert element i dokumentet som samsvarer med den gitte CSS-velgeren, returneres av denne JavaScript-funksjonen. I det grunnleggende JavaScript-eksemplet brukes det til å velge hver 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.

Forstå skriptet: Telle celler og utløse en modal

I det første skripteksemplet blir hver tabellcelle iterert over, innholdet blir evaluert og en klasse tilordnet avhengig av evalueringen ved hjelp av . Denne funksjonen er gjort mulig ved å iterere gjennom hver av de

elementer i tabellen ved hjelp av metode. Regulære uttrykk brukes til å bruke to betingede kontroller inne i denne løkken. Disse mønstrene fastslår om hver celles innhold holder seg til et bestemt format. Cellen får klasse hvis innholdet følger et mønster, for eksempel et tall og en stor bokstav. For at cellene skal kategoriseres dynamisk, er dette avgjørende.

Med konstruktør, konstrueres et regulært uttrykk for samsvarende tall etterfulgt av bokstaver. Denne teknikken sørger for at celler med data, for eksempel "1A" eller "3C," gjenkjennes og merkes med gjeldende klasse. Cellen mottar en egen klasse kalt hvis innholdet samsvarer med et annet mønster, slik "c" etterfulgt av et tall. Dette gjør det mulig å klassifisere dataene i tabellen mer presist. Videre har metoden garanterer at celler kan legge til disse klassene uten å slette noen klasser de allerede har.

Det neste trinnet er å telle de riktige cellene og starte en modal etter at de alle har blitt merket med den aktive klassen. Hver gang en celle får den aktive klassen, økes antallet og lagres i en variabel med navn . Antallet kvalifiserende celler i tabellen må fastslås ved hjelp av denne tellingen. Ved å bruke funksjon fra jQuery UI, en modal genereres når tellingen er ferdig. De attributt lar modalen åpnes automatisk. Antallet aktive celler vises inne i modalen.

I det andre tilfellet brukes vanilla JavaScript for å duplisere den samme prosedyren. brukes i stedet for jQuery i denne tilnærmingen for å velge alle tabellceller, og en enkel loop itererer gjennom hver celle. Regulære uttrykk brukes for å matche celleinnholdet, akkurat som i jQuery-løsningen. Hvis et samsvar blir oppdaget, oppdateres activeCount og den aktive klassen legges til ved hjelp av metode. Til syvende og sist, endring av den interne HTML-en til et forhåndsdefinert modalt element i DOM-en aktiverer modalen. Det samme resultatet som jQuery-eksemplet oppnås ved å bruke denne løsningen, som ikke er avhengig av eksterne biblioteker.

Å telle celler med en spesifikk klasse og utløse en modal

Denne metoden teller elementer som har en gitt klasse og tildeler dynamisk klasser til dem ved hjelp av . Det åpner deretter et modalt vindu.

$(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: Bruke Vanilla JavaScript for å telle aktive celler

I stedet for å stole på tredjepartsbiblioteker som jQuery, legger denne løsningen til en klasse og teller cellene ved hjelp av .

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

Backend-tilnærming: Bruke Node.js og Express med EJS-mal

Dette eksempel bruk for å gjengi celleantallet i et modalt vindu mens man teller celler på serversiden.

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

Enhetstesting med Jest for Backend Solution

Her utvikler vi enhetstester for Node.js-løsningen vha for å få den aktive tellelogikken til å fungere etter hensikten.

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

Utvider cellevalg og klassehåndtering i JavaScript

Arbeider med og involverer også muligheten til å dynamisk modifisere klasser som svar på brukerinnspill eller innhold. Du kan gjøre mer enn bare å telle cellene; du kan også håndtere brukerinndata og umiddelbart endre innholdet i tabellen. For eksempel ved å bruke metoder som i jQuery eller classList.remove() i vanilla JavaScript kan du dynamisk endre klassen, markere eller til og med fjerne klassen når en bruker klikker på en tabellcelle. Tabeller blir betydelig mer interaktive som et resultat, og ytterligere tilpasning basert på oppdateringer av innhold i sanntid er mulig.

En tabell som viser sanntidsdata der spesifikke celler må separeres visuelt avhengig av en klasseendring, vil være et nyttig bruksområde for dette. Det er enkelt å binde funksjoner som forårsaker disse modifikasjonene ved å bruke hendelseslyttere. I JavaScript kan du for eksempel bruke for å lytte etter hendelser på bestemte celler, for eksempel klikk eller tastetrykk. Ytterligere klasseendringer eller til og med oppdateringer til en teller som gjenspeiler antallet cellene i tabellen kan være resultatet av denne interaksjonen.

Du kan også tenke på situasjoner der celler skal oppdateres automatisk uten innspill fra brukeren. Tabellinnhold kan oppdateres og overvåkes kontinuerlig via et intervall eller AJAX-anrop. Regelmessige uttrykk og metoder som f.eks la tabellen automatisk endre klassene og starte en modal når en terskel er nådd. Tabeller kan nå brukes i mer dynamiske applikasjoner, som dashbord og datadrevne innstillinger.

  1. Hvordan kan jeg telle komponenter som tilhører en bestemt klasse i vanilla JavaScript?
  2. For å velge hvert element med den klassen, bruk ; å telle dem, bruk .
  3. Basert på innholdet i tabellcellen, hvordan kan jeg legge til en klasse i den?
  4. Du kan bruke en klasse ved å bruke og inspiser innholdet i en celle ved hjelp av eller eiendommer.
  5. Hva skiller i vanilje JavaScript fra i jQuery?
  6. er en innebygd JavaScript-egenskap, og er en jQuery-metode som henter eller modifiserer innholdet i utvalgte elementer.
  7. Når jeg teller celler som tilhører en bestemt klasse, hvordan kan jeg starte en modal?
  8. For å konstruere en modal i jQuery og få den til å utløses avhengig av antall elementer med en bestemt klasse, bruk .
  9. Hvordan kan jeg ta en klasse ut av et element i JavaScript?
  10. I vanilje JavaScript kan du bruke for å fjerne en klasse fra et element.

JavaScript eller jQuery kan brukes til å administrere telleceller med en spesifisert klasse, for eksempel , på en effektiv måte. Regulære uttrykk er et nyttig verktøy for å identifisere mønstre i tabellinnhold, noe som letter dynamiske klasseoppgaver og andre interaksjoner.

Videre er en nyttig metode for å informere brukere om en tabells status å starte en modal basert på antallet av disse aktive cellene. De funksjon i jQuery eller en tilpasset modal er to metoder som gir stor allsidighet når det gjelder håndtering av tabellinnhold.

  1. Informasjon om dynamisk tillegging av klasser og håndtering av innhold ved hjelp av JavaScript og jQuery ble hentet fra en detaljert veiledning tilgjengelig på jQuery API-dokumentasjon .
  2. Innsikt i bruk av regulære uttrykk i JavaScript for å manipulere innhold ble referert fra dokumentasjonen som finnes på MDN Web Docs .
  3. Modal opprettelse ved hjelp av jQuery UI Dialog-metoden og dens detaljerte bruk kan utforskes på jQuery UI-dialogdokumentasjon .
  4. Viktigheten av å telle elementer med spesifikke klasser i JavaScript og praktiske eksempler kan gjennomgås i artikler som FreeCodeCamp JavaScript-veiledning .