Hoe u een specifieke klasse in JavaScript gebruikt om tabelcellen te tellen

Active

Een modaal activeren met actieve klassentelling in een tabel

Mogelijk wilt u aangepast gedrag toepassen op basis van de inhoud van elke cel wanneer u ermee werkt . U kunt bijvoorbeeld specifieke patronen of criteria gebruiken om klassen dynamisch aan tabelcellen toe te wijzen. Uw tabel kan daardoor nuttiger en aantrekkelijker worden.

In dit voorbeeld krijgen tabelcellen die aan bepaalde vereisten voldoen een klasse met de naam aan hen toegevoegd. A Hiervoor wordt een functie gebruikt die elke cel onderzoekt, de inhoud ervan verifieert en vervolgens de klasse op de juiste manier toepast. Het is een productieve methode om bepaalde cellen te ordenen op basis van hun gegevens.

Na het aanbrengen van de klasse naar een subset van cellen, het tellen van het aantal cellen met deze klasse kan een vaak voorkomende volgende stap zijn. Als u een gebeurtenis of actie wilt starten, zoals het openen van een modal die het aantal toont, kan het tellen van deze cellen behoorlijk nuttig zijn.

In deze zelfstudie leert u hoe u JavaScript kunt gebruiken om het aantal cellen met de klasse en om automatisch een modaal te starten die het aantal toont. Gebruik , de oplossing is eenvoudig, efficiënt en eenvoudig te implementeren.

Commando Voorbeeld van gebruik
.each() Elk element in een reeks overeenkomende elementen wordt herhaald door deze jQuery-functie. Het past voorwaardelijke logica of klassen toe door elke tabelcel te herhalen () in our example.
addClass() The selected items receive one or more class names added to them by this jQuery method. The script applies the of classificeren naar cellen op basis van hun inhoud.
.dialoog() 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 cel komt overeen met een bepaald patroon.
RegExp() Met deze JavaScript-constructor worden reguliere expressies gemaakt. Het script kan klassen toewijzen op basis van inhoud door patronen te identificeren, zoals of .
classList.add() Deze basis-JavaScript-techniek geeft een element een bepaalde klasse. Het functioneert op dezelfde manier als jQuery's addClass() in de standaard JavaScript-oplossing, waarbij de of klasse afhankelijk van de omstandigheden.
DOMContentLoaded Wanneer het HTML-document klaar is met laden en parseren, wordt de gebeurtenis DOMContentLoaded geactiveerd. In het gewone JavaScript-voorbeeld zorgt het ervoor dat het script wordt uitgevoerd nadat de DOM is geladen.
querySelectorAll() Elk element in het document dat overeenkomt met de gegeven CSS-selector wordt geretourneerd door deze JavaScript-functie. In het standaard JavaScript-voorbeeld wordt het gebruikt om elke element in the table for further processing.
voorElke() 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.

Het script begrijpen: cellen tellen en een modaal activeren

In het eerste scriptvoorbeeld wordt elke tabelcel herhaald, wordt de inhoud ervan geëvalueerd en wordt er een klasse toegewezen, afhankelijk van de evaluatie, met behulp van . Deze functie wordt mogelijk gemaakt door elk van de

items in de tabel met behulp van de methode. Reguliere expressies worden gebruikt om twee voorwaardelijke controles binnen deze lus toe te passen. Deze patronen bepalen of de inhoud van elke cel aan een bepaald formaat voldoet. De cel krijgt de klasse als de inhoud een patroon volgt, zoals een cijfer en een hoofdletter. Dit is essentieel om de cellen dynamisch te kunnen categoriseren.

Met de constructor, wordt een reguliere expressie geconstrueerd voor het matchen van getallen gevolgd door letters. Deze techniek zorgt ervoor dat cellen met gegevens, zoals "1A" of "3C", worden herkend en gelabeld met de huidige klasse. De cel krijgt een aparte klasse genaamd als de inhoud overeenkomt met een ander patroon, bijvoorbeeld een "c", gevolgd door een cijfer. Dit maakt het mogelijk om de gegevens in de tabel nauwkeuriger te classificeren. Verder is de methode garandeert dat deze klassen aan cellen kunnen worden toegevoegd zonder klassen te verwijderen die ze al hebben.

De volgende stap is het tellen van de juiste cellen en het starten van een modal nadat ze allemaal zijn getagd met de actieve klasse. Elke keer dat een cel de actieve klasse verkrijgt, wordt de telling verhoogd en opgeslagen in een variabele met de naam . Aan de hand van deze telling moet het aantal kwalificerende cellen in de tabel worden vastgesteld. Met behulp van de functie van jQuery UI, wordt een modaal gegenereerd wanneer het tellen is voltooid. De attribuut zorgt ervoor dat de modal automatisch wordt geopend. Het aantal actieve cellen wordt binnen het modale weergegeven.

In het tweede geval wordt standaard JavaScript gebruikt om dezelfde procedure te dupliceren. wordt in deze aanpak gebruikt in plaats van jQuery om alle tabelcellen te selecteren, en een eenvoudig lus itereert door elke cel. Reguliere expressies worden gebruikt om de celinhoud te matchen, net als in de jQuery-oplossing. Als er een match wordt ontdekt, wordt de activeCount bijgewerkt en wordt de actieve klasse toegevoegd met behulp van de methode. Uiteindelijk activeert het wijzigen van de interne HTML van een vooraf gedefinieerd modaal element in de DOM het modale element. Hetzelfde resultaat als het jQuery-voorbeeld wordt bereikt met deze oplossing, die niet afhankelijk is van externe bibliotheken.

Cellen tellen met een specifieke klasse en een modaal activeren

Deze methode telt items die een bepaalde klasse hebben en wijst er dynamisch klassen aan toe met behulp van . Vervolgens wordt een modaal venster geopend.

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

Alternatief: Vanilla JavaScript gebruiken om actieve cellen te tellen

In plaats van te vertrouwen op bibliotheken van derden, zoals jQuery, voegt deze oplossing een klasse toe en telt de gebruikte cellen .

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-aanpak: Node.js en Express gebruiken met EJS-templating

Dit voorbeeld gebruikt om het aantal cellen in een modaal venster weer te geven terwijl de cellen op de server worden geteld.

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

Unit-testen met Jest voor backend-oplossing

Hier ontwikkelen we unit-tests voor de Node.js-oplossing met behulp van om ervoor te zorgen dat de actieve tellogica functioneert zoals bedoeld.

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

Uitbreiding van celselectie en klassenafhandeling in JavaScript

Werken met En omvat ook de mogelijkheid om klassen dynamisch te wijzigen als reactie op gebruikersinvoer of inhoud. Je kunt meer doen dan alleen de cellen tellen; u kunt ook gebruikersinvoer verwerken en de inhoud van de tabel onmiddellijk wijzigen. Gebruik bijvoorbeeld methoden als in jQuery of classList.remove() in standaard JavaScript kunt u de klasse dynamisch wijzigen, markeren of zelfs verwijderen wanneer een gebruiker op een tabelcel klikt. Tabellen worden hierdoor aanzienlijk interactiever en verder maatwerk op basis van updates van inhoud in realtime is mogelijk.

Een tabel met realtime gegevens waarbij specifieke cellen visueel gescheiden moeten worden, afhankelijk van een klassewijziging, zou hiervoor een nuttig gebruiksscenario zijn. Het is eenvoudig om functies die deze wijzigingen veroorzaken te binden met behulp van gebeurtenislisteners. In JavaScript kun je bijvoorbeeld om te luisteren naar gebeurtenissen in bepaalde cellen, zoals klikken of toetsaanslagen. Aanvullende klassewijzigingen of zelfs updates van een teller die het aantal weergeeft cellen in de tabel kunnen het gevolg zijn van deze interactie.

U kunt ook nadenken over situaties waarin cellen automatisch moeten worden bijgewerkt zonder enige input van de gebruiker. De tabelinhoud kan voortdurend worden bijgewerkt en gecontroleerd via een interval of AJAX-oproepen. Reguliere expressies en methoden zoals laat de tabel automatisch zijn klassen veranderen en een modaal starten wanneer een drempel wordt bereikt. Tabellen kunnen nu worden gebruikt in meer dynamische toepassingen, zoals dashboards en datagestuurde instellingen.

  1. Hoe kan ik in standaard JavaScript componenten tellen die tot een bepaalde klasse behoren?
  2. Gebruik om elk element met die klasse te selecteren ; om ze te tellen, gebruik .
  3. Hoe kan ik op basis van de inhoud van de tabelcel een klasse eraan toevoegen?
  4. U kunt een klasse toepassen met behulp van en inspecteer de inhoud van een cel met behulp van of eigenschappen.
  5. Wat onderscheidt in vanille JavaScript uit in jQuery?
  6. is een native JavaScript-eigenschap, en is een jQuery-methode die de inhoud van geselecteerde elementen ophaalt of wijzigt.
  7. Hoe kan ik een modaal starten bij het tellen van cellen die tot een bepaalde klasse behoren?
  8. Om een ​​modaal in jQuery te construeren en deze te laten activeren afhankelijk van het aantal items met een bepaalde klasse, gebruikt u .
  9. Hoe kan ik in JavaScript een klasse uit een element halen?
  10. In vanille-JavaScript kunt u gebruiken om een ​​klasse uit een element te verwijderen.

JavaScript of jQuery kunnen worden gebruikt om telcellen met een opgegeven klasse te beheren, zoals , op een effectieve manier. Reguliere expressies zijn een handig hulpmiddel voor het identificeren van patronen in tabelinhoud, wat dynamische klassentoewijzingen en andere interacties mogelijk maakt.

Bovendien is een bruikbare methode om gebruikers te informeren over de status van een tabel het starten van een modale bewerking op basis van het aantal van deze actieve cellen. De functie in jQuery of een aangepaste modal zijn twee methoden die veel veelzijdigheid bieden als het gaat om het omgaan met tabelinhoud.

  1. Informatie over het dynamisch toevoegen van klassen en het omgaan met inhoud met behulp van JavaScript en jQuery is afkomstig uit een gedetailleerde handleiding die beschikbaar is op jQuery API-documentatie .
  2. Inzichten over het gebruik van reguliere expressies in JavaScript om inhoud te manipuleren zijn te vinden in de documentatie op MDN-webdocumenten .
  3. Modale creatie met behulp van de jQuery UI Dialog-methode en het gedetailleerde gebruik ervan kunnen worden onderzocht op jQuery UI-dialoogdocumentatie .
  4. Het belang van het tellen van elementen met specifieke klassen in JavaScript en praktische voorbeelden kan worden besproken in artikelen als FreeCodeCamp JavaScript-gids .