Tietyn luokan käyttäminen JavaScriptissä taulukon solujen laskemiseen

Tietyn luokan käyttäminen JavaScriptissä taulukon solujen laskemiseen
Tietyn luokan käyttäminen JavaScriptissä taulukon solujen laskemiseen

Modaalin käynnistäminen aktiivisella luokkamäärällä taulukossa

Voit halutessasi soveltaa mukautettua toimintaa kunkin solun sisällön perusteella työskennellessäsi HTML-taulukoita. Voit esimerkiksi määrittää luokkia dynaamisesti taulukon soluihin käyttämällä tiettyjä malleja tai ehtoja. Tämän seurauksena pöydästäsi voi tulla hyödyllisempi ja kiinnostavampi.

Tässä esimerkissä tietyt vaatimukset täyttävillä taulukon soluilla on luokka nimeltä aktiivinen lisätty niihin. A JavaScript Tähän käytetään funktiota, joka tutkii jokaisen solun, varmistaa sen sisällön ja soveltaa sitten luokkaa asianmukaisesti. Se on tuottava menetelmä tiettyjen solujen järjestämiseen niiden tietojen mukaan.

Sovelluksen jälkeen aktiivinen luokkaan solujen osajoukkoon, tämän luokan sisältävien solujen lukumäärän laskeminen voi olla usein seuraava askel. Jos haluat aloittaa tapahtuman tai toiminnon, tällainen modaalin avaaminen, joka näyttää lukumäärän, näiden solujen laskeminen voi olla varsin hyödyllistä.

Tämä opetusohjelma opettaa sinulle, kuinka JavaScriptin avulla lasketaan niiden solujen määrä, joissa on aktiivinen luokassa ja käynnistää automaattisesti modaalin, joka näyttää määrän. Käyttämällä jQuery, ratkaisu on suoraviivainen, tehokas ja helppo toteuttaa.

Komento Käyttöesimerkki
.each() Tämä jQuery-funktio iteroi jokaisen elementin osuvien elementtien joukossa. Se soveltaa ehdollista logiikkaa tai luokkia iteroimalla jokaisen taulukon solun () in our example.
addClass() The selected items receive one or more class names added to them by this jQuery method. The script applies the aktiivinen tai ei yhtään luokkaan soluihin sisällön mukaan.
.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.
.teksti() 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 solu vastaa tiettyä mallia.
RegExp() Säännölliset lausekkeet tehdään tällä JavaScript-konstruktorilla. Käsikirjoitus voi määrittää luokkia sisällön perusteella tunnistamalla malleja, kuten numerot ja isot kirjaimet tai c ja sen jälkeen numerot.
classList.add() Tämä JavaScriptin perustekniikka antaa elementille tietyn luokan. Se toimii samalla tavalla kuin jQueryn addClass() vanilla JavaScript -ratkaisussa, lisäämällä aktiivinen tai ei yhtään luokka olosuhteista riippuen.
DOMContentLoaded Kun HTML-dokumentti on ladattu ja jäsennetty, DOMContentLoaded-tapahtuma käynnistyy. Vanilla JavaScript-esimerkissä se varmistaa, että komentosarja suoritetaan sen jälkeen, kun DOM on latautunut.
querySelectorAll() Tämä JavaScript-funktio palauttaa jokaisen asiakirjan elementin, joka vastaa annettua CSS-valitsinta. JavaScript-perusesimerkissä sitä käytetään valitsemaan jokainen element in the table for further processing.
jokaiselle () 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.

Käsikirjoituksen ymmärtäminen: Solujen laskeminen ja modaalin käynnistäminen

Ensimmäisessä komentosarjaesimerkissä jokainen taulukon solu iteroidaan, sen sisältö arvioidaan ja luokka määritetään arvioinnin mukaan käyttämällä jQuery. Tämä ominaisuus on mahdollista iteroimalla kunkin taulukon kohteet käyttämällä .each() menetelmä. Säännöllisiä lausekkeita käytetään kahden ehdollisen tarkistuksen soveltamiseen tämän silmukan sisällä. Nämä mallit varmistavat, noudattaako kunkin solun sisältö tiettyä muotoa. Solu saa aktiivinen luokkaan, jos sisältö noudattaa kaavaa, kuten numeroa ja isoa kirjainta. Tämä on välttämätöntä, jotta solut voidaan luokitella dynaamisesti.

kanssa RegExp() konstruktori, muodostetaan säännöllinen lauseke vastaaville numeroille ja kirjaimille. Tämä tekniikka varmistaa, että solut, joissa on dataa, kuten "1A" tai "3C", tunnistetaan ja merkitään nykyisellä luokalla. Solu saa erillisen luokan nimeltä ei yhtään jos sisältö vastaa eri mallia, esimerkiksi "c" ja sen jälkeen numero. Näin taulukon tiedot voidaan luokitella tarkemmin. Lisäksi, addClass() menetelmä takaa, että solut voivat lisätä nämä luokat poistamatta niitä mahdollisesti jo olevia luokkia.

Seuraava vaihe on laskea sopivat solut ja aloittaa modaali sen jälkeen, kun ne kaikki on merkitty aktiivisella luokalla. Joka kerta kun solu saa aktiivisen luokan, määrä kasvaa ja tallennetaan nimettyyn muuttujaan aktiivinen määrä. Taulukon kelvollisten solujen lukumäärä on määritettävä tämän luvun avulla. Käyttämällä .dialog() funktion jQuery-käyttöliittymästä, modaali luodaan, kun laskenta on valmis. The autoOpen: totta attribuutti sallii modaalin avautua automaattisesti. Aktiivisten solujen lukumäärä näkyy modaalin sisällä.

Toisessa tapauksessa vanilja JavaScriptiä käytetään kopioimaan identtinen menettely. querySelectorAll() käytetään jQueryn sijasta tässä lähestymistavassa kaikkien taulukon solujen valitsemiseen, ja se on yksinkertainen jokaiselle () silmukka iteroituu jokaisen solun läpi. Säännöllisiä lausekkeita käytetään vastaamaan solun sisältöä, aivan kuten jQuery-ratkaisussa. Jos vastaavuus löydetään, activeCount päivitetään ja aktiivinen luokka lisätään käyttämällä classList.add() menetelmä. Lopulta DOM:n ennalta määritetyn modaalielementin sisäisen HTML-koodin muuttaminen aktivoi modaalin. Sama tulos kuin jQuery-esimerkissä saavutetaan tällä ratkaisulla, joka ei ole riippuvainen ulkopuolisista kirjastoista.

Tietyn luokan solujen laskeminen ja modaalin laukaiseminen

Tämä menetelmä laskee kohteet, joilla on tietty luokka, ja määrittää niille dynaamisesti luokat käyttämällä jQuery. Sitten se avaa modaaliikkunan.

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

Vaihtoehto: Vanilla JavaScriptin käyttäminen aktiivisten solujen laskemiseen

Sen sijaan, että luottaisimme kolmannen osapuolen kirjastoihin, kuten jQueryyn, tämä ratkaisu lisää luokan ja laskee solut käyttämällä puhdas 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;
});

Taustaratkaisu: Node.js:n ja Expressin käyttö EJS-mallin kanssa

Tämä Node.js esimerkkikäyttöä EJS-mallinnus renderöidä solujen lukumäärän modaaliikkunassa samalla kun lasketaan soluja palvelinpuolella.

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

Yksikkötestaus Jest for Backend Solutionin avulla

Täällä kehitämme Node.js-ratkaisun yksikkötestejä käyttämällä Jest jotta aktiivinen laskentalogiikka toimisi tarkoitetulla tavalla.

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

Solujen valinnan ja luokan käsittelyn laajentaminen JavaScriptissä

kanssa JavaScript ja HTML-taulukoita sisältää myös mahdollisuuden muokata luokkia dynaamisesti käyttäjän syötteen tai sisällön perusteella. Voit tehdä muutakin kuin vain laskea soluja; Voit myös käsitellä käyttäjien syötteitä ja muuttaa taulukon sisältöä välittömästi. Esimerkiksi käyttämällä menetelmiä, kuten removeClass() jQueryssä tai classList.remove() vanilla JavaScriptissä voit muokata luokkaa dynaamisesti, korostaa tai jopa poistaa luokan, kun käyttäjä napsauttaa taulukon solua. Taulukot muuttuvat tämän seurauksena huomattavasti interaktiivisemmiksi, ja lisäräätälöinti reaaliaikaisten sisältöpäivitysten perusteella on mahdollista.

Reaaliaikaista dataa näyttävä taulukko, jossa tietyt solut on erotettava visuaalisesti luokan muutoksesta riippuen, olisi hyödyllinen käyttötapa tähän. Näitä muutoksia aiheuttavia toimintoja on helppo sitoa käyttämällä tapahtumakuuntelijoita. Esimerkiksi JavaScriptissä voit käyttää addEventListener() kuunnellaksesi tapahtumia tietyissä soluissa, kuten napsautuksia tai näppäinpainalluksia. Lisää luokkamuutoksia tai jopa päivityksiä laskuriin, joka heijastaa lukumäärää aktiivinen taulukon solut voivat johtua tästä vuorovaikutuksesta.

Voit myös miettiä tilanteita, joissa solujen pitäisi päivittää automaattisesti ilman käyttäjän syötteitä. Taulukon sisältöä voidaan päivittää ja seurata jatkuvasti intervallin tai AJAX-kutsujen avulla. Säännölliset lausekkeet ja menetelmät, kuten setInterval() sallia taulukon vaihtaa automaattisesti luokkiaan ja käynnistää modaali, kun kynnys saavutetaan. Taulukoita voidaan nyt käyttää dynaamisemmissa sovelluksissa, kuten kojelaudoissa ja dataohjatuissa asetuksissa.

Usein kysytyt kysymykset JavaScript-luokan käsittelystä ja solujen laskemisesta

  1. Kuinka voin laskea tiettyyn luokkaan kuuluvat komponentit vanilja JavaScriptissä?
  2. Valitse jokainen kyseisen luokan elementti käyttämällä document.querySelectorAll('.className'); laskea niitä, käytä length.
  3. Miten voin lisätä siihen luokan taulukon solun sisällön perusteella?
  4. Voit hakea luokkaan käyttämällä classList.add() ja tarkasta solun sisältö käyttämällä textContent tai innerText ominaisuuksia.
  5. Mikä erottaa text() in vanilja JavaScript alkaen textContent jQueryssä?
  6. textContent on natiivi JavaScript-ominaisuus, ja text() on jQuery-menetelmä, joka hakee tai muokkaa valittujen elementtien sisältöä.
  7. Kun lasken tiettyyn luokkaan kuuluvia soluja, kuinka voin aloittaa modaalin?
  8. Jos haluat muodostaa modaalin jQueryssä ja saada sen liipaisun riippuvaiseksi tietyn luokan kohteiden määrästä, käytä .dialog().
  9. Miten voin ottaa luokan pois elementistä JavaScriptissä?
  10. Vanilja JavaScriptissä voit käyttää classList.remove('className') poistaaksesi luokan elementistä.

Viimeisiä ajatuksia solujen laskemisesta ja modaaleista

JavaScriptiä tai jQueryä voidaan käyttää tietyn luokan solujen laskentaan, esim aktiivinen, tehokkaalla tavalla. Säännölliset lausekkeet ovat hyödyllinen työkalu taulukkosisällön kuvioiden tunnistamiseen, mikä helpottaa dynaamisia luokkamäärityksiä ja muita vuorovaikutuksia.

Lisäksi hyödyllinen tapa ilmoittaa käyttäjille taulukon tilasta on käynnistää modaali näiden aktiivisten solujen lukumäärän perusteella. The .dialog() toiminto jQueryssa tai mukautettu modaali ovat kaksi menetelmää, jotka tarjoavat paljon monipuolisuutta taulukon sisällön käsittelyssä.

Lähteet ja viitteet
  1. Tiedot luokkien dynaamisesta lisäämisestä ja sisällön käsittelystä JavaScriptin ja jQueryn avulla saatiin yksityiskohtaisesta oppaasta, joka on saatavilla osoitteessa jQuery API -dokumentaatio .
  2. Näkemyksiin JavaScriptin säännöllisten lausekkeiden käytöstä sisällön manipuloimiseen viitattiin dokumentaatiosta, joka löytyy osoitteesta MDN Web Docs .
  3. Modaalin luomiseen jQuery UI Dialog -menetelmällä ja sen yksityiskohtaiseen käyttöön voi tutustua osoitteessa jQuery-käyttöliittymän valintaikkunan dokumentaatio .
  4. JavaScriptin tiettyjen luokkien elementtien laskemisen tärkeyttä ja käytännön esimerkkejä voidaan tarkastella esimerkiksi artikkeleissa FreeCodeCamp JavaScript-opas .