Come utilizzare una classe specifica in JavaScript per contare le celle della tabella

Come utilizzare una classe specifica in JavaScript per contare le celle della tabella
Come utilizzare una classe specifica in JavaScript per contare le celle della tabella

Attivazione di un modale con conteggio delle classi attive in una tabella

Potresti voler applicare un comportamento personalizzato in base al contenuto di ciascuna cella quando lavori Tabelle HTML. Ad esempio, puoi utilizzare modelli o criteri specifici per assegnare dinamicamente le classi alle celle della tabella. Di conseguenza, la tua tabella potrebbe diventare più utile e coinvolgente.

In questo esempio, le celle della tabella che soddisfano determinati requisiti avranno una classe denominata attivo aggiunto ad essi. UN JavaScript A tale scopo viene utilizzata la funzione che esamina ogni cella, ne verifica il contenuto e quindi applica la classe in modo appropriato. È un metodo produttivo per organizzare celle particolari in base ai loro dati.

Dopo aver applicato il attivo classe in un sottoinsieme di celle, contare il numero di celle che hanno questa classe potrebbe essere un passaggio successivo frequente. Se desideri avviare un evento o un'azione, ad esempio aprire una finestra modale che mostra il conteggio, contare queste celle può essere molto utile.

Questo tutorial ti insegnerà come utilizzare JavaScript per contare il numero di celle che contengono il file attivo class e per avviare automaticamente una modale che mostra il conteggio. Utilizzando jQuery, la soluzione è diretta, efficiente e semplice da implementare.

Comando Esempio di utilizzo
.each() Ogni elemento in un insieme di elementi corrispondenti viene ripetuto da questa funzione jQuery. Applica logica o classi condizionali eseguendo un'iterazione su ciascuna cella della tabella () in our example.
addClass() The selected items receive one or more class names added to them by this jQuery method. The script applies the attivo O nessuno classe alle celle in base al loro contenuto.
.dialogo() 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.
.testo() 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 cella corrisponde a un modello particolare.
RegExp() Le espressioni regolari vengono create con questo costruttore JavaScript. Lo script può assegnare classi in base al contenuto identificando modelli come numeri seguiti da lettere maiuscole O c seguito da cifre.
classList.add() Questa tecnica JavaScript di base conferisce a un elemento una classe particolare. Funziona in modo simile a addClass() di jQuery nella soluzione JavaScript vanilla, aggiungendo il file attivo O nessuno classe a seconda delle condizioni.
DOMContentLoaded Una volta terminato il caricamento e l'analisi del documento HTML, viene attivato l'evento DOMContentLoaded. Nell'esempio JavaScript vanilla, si assicura che lo script venga eseguito al termine del caricamento del DOM.
querySelectorAll() Ogni elemento nel documento che corrisponde al selettore CSS specificato viene restituito da questa funzione JavaScript. Nell'esempio JavaScript di base, viene utilizzato per selezionare Every element in the table for further processing.
perOgni() 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.

Comprensione dello script: conteggio delle celle e attivazione di una modale

Nel primo esempio di script, ogni cella della tabella viene ripetuta, il suo contenuto viene valutato e viene assegnata una classe in base alla valutazione utilizzando jQuery. Questa funzionalità è resa possibile dall'iterazione di ciascuno dei file elementi nella tabella utilizzando il file .ogni() metodo. Le espressioni regolari vengono utilizzate per applicare due controlli condizionali all'interno di questo ciclo. Questi modelli accertano se il contenuto di ciascuna cella aderisce a un formato particolare. La cellula guadagna il attivo class se il contenuto segue uno schema, ad esempio un numero e una lettera maiuscola. Affinché le celle possano essere categorizzate dinamicamente, questo è essenziale.

Con il RegExp() costruttore, viene costruita un'espressione regolare per i numeri corrispondenti seguiti da lettere. Questa tecnica garantisce che le celle con dati, come "1A" o "3C", vengano riconosciute ed etichettate con la classe corrente. La cella riceve una classe separata chiamata nessuno se il contenuto corrisponde a uno schema diverso, ad esempio "c" seguito da un numero. Ciò consente di classificare i dati nella tabella in modo più preciso. Inoltre, il addClass() Il metodo garantisce che le celle possano aggiungere queste classi senza eliminare alcuna classe che potrebbero già avere.

Il passaggio successivo consiste nel contare le celle appropriate e avviare una modale dopo che sono state tutte contrassegnate con la classe attiva. Ogni volta che una cella ottiene la classe attiva, il conteggio viene incrementato e salvato in una variabile denominata activeCount. Il numero di celle qualificanti nella tabella deve essere accertato utilizzando questo conteggio. Utilizzando il .dialogo() funzione dall'interfaccia utente jQuery, viene generata una modale al termine del conteggio. IL apertura automatica: vero L'attributo consente al modale di aprirsi automaticamente. Il numero di celle attive viene mostrato all'interno del modale.

Nel secondo caso, viene utilizzato JavaScript vanilla per duplicare la procedura identica. querySelectorAll() viene utilizzato al posto di jQuery in questo approccio per selezionare tutte le celle della tabella e in modo semplice perOgni() il ciclo scorre ogni cella. Le espressioni regolari vengono utilizzate per abbinare il contenuto della cella, proprio come nella soluzione jQuery. Se viene rilevata una corrispondenza, activeCount viene aggiornato e la classe attiva viene aggiunta utilizzando il file listaclasse.add() metodo. In definitiva, alterando l'HTML interno di un elemento modale predefinito nel DOM si attiva il modale. Lo stesso risultato dell'esempio jQuery si ottiene utilizzando questa soluzione, che non si basa su librerie esterne.

Conteggio delle celle con una classe specifica e attivazione di una modale

Questo metodo conta gli elementi che hanno una determinata classe e assegna loro dinamicamente le classi utilizzando jQuery. Quindi si apre una finestra modale.

$(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: utilizzare Vanilla JavaScript per contare le celle attive

Invece di fare affidamento su librerie di terze parti come jQuery, questa soluzione aggiunge una classe e conta le celle utilizzando puro JavaScript.

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

Approccio backend: utilizzo di Node.js ed Express con modelli EJS

Questo Node.js usi di esempio Modelli EJS per eseguire il rendering del conteggio delle celle in una finestra modale durante il conteggio delle celle sul lato server.

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

Test unitari con Jest per la soluzione backend

Qui sviluppiamo test unitari per la soluzione Node.js utilizzando Scherzo per fare in modo che la logica del conteggio attivo funzioni come previsto.

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

Espansione sulla selezione delle celle e sulla gestione delle classi in JavaScript

Lavorare con JavaScript E Tabelle HTML implica anche la possibilità di modificare dinamicamente le classi in risposta all'input o al contenuto dell'utente. Puoi fare di più che contare semplicemente le celle; puoi anche gestire gli input dell'utente e modificare istantaneamente il contenuto della tabella. Ad esempio, utilizzando metodi come removeClass() in jQuery o classList.remove() in JavaScript Vanilla, puoi modificare dinamicamente la classe, evidenziare o persino rimuovere la classe quando un utente fa clic su una cella della tabella. Di conseguenza, le tabelle diventano notevolmente più interattive ed è possibile un'ulteriore personalizzazione basata sull'aggiornamento dei contenuti in tempo reale.

Una tabella che mostra dati in tempo reale in cui celle specifiche devono essere separate visivamente a seconda di un cambio di classe sarebbe un caso d'uso utile a questo scopo. È semplice associare le funzioni che causano queste modifiche utilizzando i listener di eventi. In JavaScript, ad esempio, puoi usare addEventListener() per ascoltare eventi su celle particolari, come clic o pressioni di tasti. Ulteriori modifiche alle classi o addirittura aggiornamenti a un contatore che riflette il numero di attivo le celle nella tabella possono risultare da questa interazione.

Puoi anche pensare a situazioni in cui le celle dovrebbero aggiornarsi automaticamente senza alcun input da parte dell'utente. Il contenuto della tabella può essere aggiornato e monitorato continuamente tramite un intervallo o chiamate AJAX. Espressioni regolari e metodi come setInterval() consentire alla tabella di cambiare automaticamente le sue classi e avviare una modale quando viene raggiunta una soglia. Le tabelle ora possono essere utilizzate in applicazioni più dinamiche, come dashboard e impostazioni basate sui dati.

Domande frequenti sulla gestione delle classi JavaScript e sul conteggio delle celle

  1. In JavaScript Vanilla, come posso contare i componenti che appartengono a una particolare classe?
  2. Per selezionare ogni elemento con quella classe, utilizzare document.querySelectorAll('.className'); per contarli, usa length.
  3. In base al contenuto della cella della tabella, come posso aggiungervi una classe?
  4. Puoi applicare una classe utilizzando classList.add() e ispezionare il contenuto di una cella utilizzando textContent O innerText proprietà.
  5. Ciò che distingue text() in JavaScript vaniglia da textContent in jQuery?
  6. textContent è una proprietà JavaScript nativa e text() è un metodo jQuery che recupera o modifica il contenuto degli elementi selezionati.
  7. Quando si contano le celle che appartengono a una particolare classe, come posso avviare una modale?
  8. Per costruire un modale in jQuery e attivarlo in base al numero di elementi con una particolare classe, utilizzare .dialog().
  9. In JavaScript, come posso eliminare una classe da un elemento?
  10. In JavaScript Vanilla, puoi usare classList.remove('className') per rimuovere una classe da un elemento.

Considerazioni finali sul conteggio delle cellule e sui modali

JavaScript o jQuery possono essere utilizzati per gestire il conteggio delle celle con una classe specificata, ad esempio attivo, in modo efficace. Le espressioni regolari sono uno strumento utile per identificare modelli nel contenuto della tabella, facilitando l'assegnazione dinamica delle classi e altre interazioni.

Inoltre, un metodo utile per informare gli utenti sullo stato di una tabella è avviare una finestra modale basata sul numero di celle attive. IL .dialogo() funzione in jQuery o un modale personalizzato sono due metodi che offrono una grande versatilità quando si tratta di gestire il contenuto della tabella.

Fonti e riferimenti
  1. Le informazioni sull'aggiunta dinamica di classi e sulla gestione dei contenuti utilizzando JavaScript e jQuery sono state ricavate da una guida dettagliata disponibile all'indirizzo Documentazione dell'API jQuery .
  2. Gli approfondimenti sull'uso delle espressioni regolari in JavaScript per manipolare il contenuto sono stati referenziati dalla documentazione trovata su Documenti Web MDN .
  3. È possibile esplorare la creazione modale utilizzando il metodo della finestra di dialogo dell'interfaccia utente jQuery e il suo utilizzo dettagliato all'indirizzo Documentazione della finestra di dialogo dell'interfaccia utente jQuery .
  4. L'importanza di contare gli elementi con classi specifiche in JavaScript ed esempi pratici possono essere esaminati in articoli come Guida JavaScript di FreeCodeCamp .