Hur man använder en specifik klass i JavaScript för att räkna tabellceller

Active

Utlöser en modal med aktiv klassräkning i en tabell

Du kanske vill tillämpa anpassat beteende baserat på innehållet i varje cell när du arbetar med . Du kan till exempel använda specifika mönster eller kriterier för att dynamiskt tilldela klasser till tabellceller. Ditt bord kan bli mer användbart och engagerande som ett resultat.

I det här exemplet kommer tabellceller som uppfyller vissa krav att ha en klass som heter lagt till dem. A funktion som undersöker varje cell, verifierar dess innehåll och sedan tillämpar klassen på lämpligt sätt används för att göra detta. Det är en produktiv metod för att organisera specifika celler enligt deras data.

Efter applicering av klass till en delmängd av celler, att räkna antalet celler som har denna klass kan vara ett vanligt nästa steg. Om du vill starta en händelse eller åtgärd, kan en sådan öppning av en modal som visar antalet, räkna dessa celler vara till stor hjälp.

Denna handledning kommer att lära dig hur du använder JavaScript för att räkna antalet celler som har klass och för att automatiskt starta en modal som visar antalet. Använder , lösningen är enkel, effektiv och enkel att implementera.

Kommando Exempel på användning
.each() Varje element i en uppsättning matchade element itereras över av denna jQuery-funktion. Den tillämpar villkorlig logik eller klasser genom att iterera över varje tabellcell () 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 klass till celler enligt deras innehåll.
.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 cell matchar ett visst mönster.
RegExp() Reguljära uttryck görs med denna JavaScript-konstruktor. Skriptet kan tilldela klasser baserat på innehåll genom att identifiera mönster som t.ex eller .
classList.add() Denna grundläggande JavaScript-teknik ger ett element en viss klass. Den fungerar på samma sätt som jQuerys addClass() i vanilla JavaScript-lösningen, lägger till eller klass beroende på förhållandena.
DOMContentLoaded När HTML-dokumentet har laddats och analyserats färdigt utlöses händelsen DOMContentLoaded. I vanilla JavaScript-exemplet ser det till att skriptet körs efter att DOM har laddats klart.
querySelectorAll() Varje element i dokumentet som matchar den givna CSS-väljaren returneras av denna JavaScript-funktion. I det grundläggande JavaScript-exemplet används det för att välja alla 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.

Förstå skriptet: Räkna celler och utlösa en modal

I det första skriptexemplet itereras varje tabellcell över, dess innehåll utvärderas och en klass tilldelas beroende på utvärderingen med . Denna funktion är möjlig genom att iterera genom var och en av

objekt i tabellen med hjälp av metod. Reguljära uttryck används för att tillämpa två villkorskontroller i denna loop. Dessa mönster avgör om varje cells innehåll följer ett visst format. Cellen vinner klass om innehållet följer ett mönster, till exempel en siffra och en stor bokstav. För att cellerna ska kunna kategoriseras dynamiskt är detta väsentligt.

Med konstruktor, konstrueras ett reguljärt uttryck för matchande siffror följt av bokstäver. Den här tekniken ser till att celler med data, som "1A" eller "3C", känns igen och märks med den aktuella klassen. Cellen får en separat klass som kallas om innehållet matchar ett annat mönster, såsom "c" följt av ett nummer. Detta gör det möjligt att klassificera uppgifterna i tabellen mer exakt. Dessutom metod garanterar att celler kan lägga till dessa klasser utan att ta bort några klasser som de redan har.

Nästa steg är att räkna de lämpliga cellerna och initiera en modal efter att de alla har taggats med den aktiva klassen. Varje gång en cell erhåller den aktiva klassen, ökas antalet och sparas i en variabel som heter . Antalet kvalificerade celler i tabellen måste fastställas med hjälp av detta antal. Med hjälp av funktion från jQuery UI, en modal genereras när räkningen är klar. De attribut tillåter modalen att öppnas automatiskt. Antalet aktiva celler visas inuti modalen.

I det andra fallet används vanilla JavaScript för att duplicera den identiska proceduren. används i stället för jQuery i detta tillvägagångssätt för att välja alla tabellceller, och en enkel loop itererar genom varje cell. Reguljära uttryck används för att matcha cellinnehållet, precis som i jQuery-lösningen. Om en matchning upptäcks uppdateras activeCount och den aktiva klassen läggs till med hjälp av metod. I slutändan aktiveras modalen genom att ändra den interna HTML-koden för ett fördefinierat modalt element i DOM. Samma resultat som exemplet jQuery uppnås med denna lösning, som inte är beroende av externa bibliotek.

Räkna celler med en specifik klass och trigga en modal

Denna metod räknar objekt som har en given klass och tilldelar dynamiskt klasser till dem med hjälp av . Det öppnar sedan ett modalt fönster.

$(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: Använda Vanilla JavaScript för att räkna aktiva celler

Istället för att förlita sig på tredjepartsbibliotek som jQuery, lägger den här lösningen till en klass och räknar cellerna med .

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-metoden: Använder Node.js och Express med EJS-mall

Detta exempel användningar för att återge cellantalet i ett modalt fönster medan celler räknas på serversidan.

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

Enhetstestning med Jest för backend-lösning

Här utvecklar vi enhetstester för Node.js-lösningen med hjälp av för att få den aktiva räkningslogiken att fungera som avsett.

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

Utöka cellurval och klasshantering i JavaScript

Arbetar med och involverar också möjligheten att dynamiskt modifiera klasser som svar på användarinmatning eller innehåll. Du kan göra mer än att bara räkna cellerna; du kan också hantera användarinmatningar och omedelbart ändra innehållet i tabellen. Till exempel att använda metoder som i jQuery eller classList.remove() i vanilla JavaScript kan du dynamiskt ändra klassen, markera eller till och med ta bort klassen när en användare klickar på en tabellcell. Tabeller blir avsevärt mer interaktiva som ett resultat, och ytterligare anpassning baserat på uppdateringar av innehåll i realtid är möjlig.

En tabell som visar realtidsdata där specifika celler måste separeras visuellt beroende på en klassändring skulle vara ett användbart användningsfall för detta. Det är enkelt att binda funktioner som orsakar dessa ändringar genom att använda händelseavlyssnare. I JavaScript kan du till exempel använda för att lyssna efter händelser på särskilda celler, såsom klick eller knapptryckningar. Ytterligare klassändringar eller till och med uppdateringar av en räknare som återspeglar antalet celler i tabellen kan härröra från denna interaktion.

Du kan också tänka på situationer där celler ska uppdateras automatiskt utan någon input från användaren. Tabellinnehåll kan uppdateras och övervakas kontinuerligt via ett intervall eller AJAX-samtal. Reguljära uttryck och metoder som t.ex tillåta tabellen att automatiskt ändra sina klasser och starta en modal när en tröskel nås. Tabeller kan nu användas i mer dynamiska applikationer, som instrumentpaneler och datadrivna inställningar.

  1. Hur kan jag räkna komponenter som tillhör en viss klass i vanilla JavaScript?
  2. För att välja varje element med den klassen, använd ; att räkna dem, använd .
  3. Baserat på innehållet i tabellcellen, hur kan jag lägga till en klass till den?
  4. Du kan tillämpa en klass med hjälp av och inspektera innehållet i en cell med hjälp av eller fastigheter.
  5. Vad som utmärker i vanilj JavaScript från i jQuery?
  6. är en inbyggd JavaScript-egenskap och är en jQuery-metod som hämtar eller modifierar innehållet i valda element.
  7. När jag räknar celler som tillhör en viss klass, hur kan jag starta en modal?
  8. För att konstruera en modal i jQuery och få den att triggas beroende på antalet objekt med en viss klass, använd .
  9. Hur kan jag ta bort en klass från ett element i JavaScript?
  10. I vanilj JavaScript kan du använda för att ta bort en klass från ett element.

JavaScript eller jQuery kan användas för att hantera räkningsceller med en specificerad klass, till exempel , på ett effektivt sätt. Reguljära uttryck är ett användbart verktyg för att identifiera mönster i tabellinnehåll, vilket underlättar dynamiska klassuppgifter och andra interaktioner.

En användbar metod för att informera användare om en tabells status är dessutom att initiera en modal baserat på antalet av dessa aktiva celler. De funktion i jQuery eller en anpassad modal är två metoder som ger en hel del mångsidighet när det gäller att hantera tabellinnehåll.

  1. Information om att dynamiskt lägga till klasser och hantera innehåll med JavaScript och jQuery hämtades från en detaljerad guide tillgänglig på jQuery API dokumentation .
  2. Insikter om att använda reguljära uttryck i JavaScript för att manipulera innehåll refererades från dokumentationen som finns på MDN Web Docs .
  3. Modalskapande med hjälp av jQuery UI Dialog-metoden och dess detaljerade användning kan utforskas på Dokumentation för jQuery UI Dialog .
  4. Vikten av att räkna element med specifika klasser i JavaScript och praktiska exempel kan granskas i artiklar som FreeCodeCamp JavaScript-guide .