Egy adott osztály használata a JavaScriptben a táblázatcellák számlálásához

Egy adott osztály használata a JavaScriptben a táblázatcellák számlálásához
Egy adott osztály használata a JavaScriptben a táblázatcellák számlálásához

Modal aktiválása aktív osztályszámmal egy táblázatban

Érdemes lehet egyéni viselkedést alkalmazni az egyes cellák tartalma alapján, amikor dolgozik HTML táblázatok. Használhat például meghatározott mintákat vagy feltételeket az osztályok dinamikus hozzárendeléséhez a táblázatcellákhoz. Ennek eredményeként az asztal hasznosabbá és vonzóbbá válhat.

Ebben a példában azoknak a táblázatcelláknak, amelyek megfelelnek bizonyos követelményeknek, egy osztály neve lesz aktív hozzájuk. A JavaScript Ehhez olyan függvényt használunk, amely megvizsgálja az egyes cellákat, ellenőrzi azok tartalmát, majd megfelelően alkalmazza az osztályt. Ez egy produktív módszer bizonyos sejtek adataik szerinti rendszerezésére.

Alkalmazása után a aktív osztályt a cellák egy részhalmazához, az ilyen osztályt tartalmazó cellák számának megszámlálása gyakori következő lépés lehet. Ha eseményt vagy akciót szeretne elindítani, akkor egy ilyen modális megnyitása, amely a számlálást mutatja, ezeknek a celláknak a megszámlálása nagyon hasznos lehet.

Ez az oktatóanyag megtanítja Önnek, hogyan használhatja a JavaScriptet a következővel rendelkező cellák számának megszámlálásához aktív osztályba, és automatikusan elindít egy modált, amely a számlálást mutatja. Használata jQuery, a megoldás egyszerű, hatékony és egyszerűen megvalósítható.

Parancs Használati példa
.each() Ez a jQuery függvény az egyező elemek halmazának minden elemét megismétli. Feltételes logikát vagy osztályokat alkalmaz az egyes táblacellákon történő iterációval () in our example.
addClass() The selected items receive one or more class names added to them by this jQuery method. The script applies the aktív vagy egyik sem osztályt cellákba tartalmuk szerint.
.párbeszéd() 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.
.szöveg() 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 egy adott mintának felel meg.
RegExp() A reguláris kifejezések ezzel a JavaScript-konstruktorral készülnek. A szkript a tartalom alapján osztályokat rendelhet hozzá olyan minták azonosításával, mint pl számokat, majd nagybetűket vagy c, majd számjegyek.
classList.add() Ez az alapvető JavaScript technika egy adott osztályt ad egy elemnek. Hasonlóan működik, mint a jQuery addClass() a vanilla JavaScript megoldásában, hozzáadva a aktív vagy egyik sem osztály a körülményektől függően.
DOMContentLoaded Amikor a HTML-dokumentum betöltése és elemzése befejeződött, a DOMContentLoaded esemény aktiválódik. A vanília JavaScript-példában gondoskodik arról, hogy a szkript a DOM betöltése után lefusson.
querySelectorAll() Ez a JavaScript-függvény a dokumentumban minden olyan elemet visszaad, amely megfelel az adott CSS-választónak. Az alap JavaScript-példában az összes kiválasztására használják 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.

A forgatókönyv értelmezése: Cellák számlálása és egy modál aktiválása

Az első szkriptpéldában minden táblacella ismétlődik, tartalma kiértékelődik, és a kiértékeléstől függően osztály kerül hozzárendelésre jQuery. Ez a funkció az egyes elemekkel a táblázatban .minden() módszer. A reguláris kifejezések két feltételes ellenőrzés alkalmazására szolgálnak ezen a cikluson belül. Ezek a minták megállapítják, hogy az egyes cellák tartalma megfelel-e egy adott formátumnak. A sejt elnyeri a aktív osztályba, ha a tartalom mintát követ, például számot és nagybetűt. A cellák dinamikus kategorizálásához ez elengedhetetlen.

A RegExp() konstruktor, akkor egy reguláris kifejezés jön létre a számok és a betűk közötti egyező kifejezésekhez. Ez a technika biztosítja, hogy az adatokat tartalmazó cellák, például „1A” vagy „3C”, felismerésre és az aktuális osztályra címkézve legyenek. A cella egy külön osztályt kap, az úgynevezett egyik sem ha a tartalom egy másik mintára egyezik, akkor a „c” jelet egy szám követi. Ez lehetővé teszi az adatok pontosabb osztályozását a táblázatban. Továbbá a addClass() A metódus garantálja, hogy a cellák hozzáadhatják ezeket az osztályokat anélkül, hogy törölnék a már meglévő osztályokat.

A következő lépés a megfelelő cellák megszámlálása és a modális kezdeményezése, miután mindegyiket megcímkézték az aktív osztállyal. Minden alkalommal, amikor egy cella megkapja az aktív osztályt, a szám növekszik, és elmentődik egy nevű változóba activeCount. A táblázatban szereplő minősítő cellák számát ezzel a számmal kell megállapítani. A .párbeszéd() függvényt a jQuery UI-ból, egy modális generálódik, amikor a számlálás befejeződött. A autoOpen: igaz attribútum lehetővé teszi a modális automatikus megnyitását. Az aktív cellák száma a modális belsejében látható.

A második esetben a vanília JavaScriptet használják az azonos eljárás megkettőzésére. querySelectorAll() Ebben a megközelítésben a jQuery helyett az összes táblázatcella kijelölésére szolgál, és egy egyszerű forEach() ciklus iterál minden cellán keresztül. A cellatartalomhoz reguláris kifejezéseket használnak, akárcsak a jQuery megoldásban. Ha egyezést észlel, az activeCount frissül, és az aktív osztály hozzáadódik a következővel classList.add() módszer. Végső soron egy előre meghatározott modális elem belső HTML-kódjának megváltoztatása a DOM-ban aktiválja a modált. A jQuery példával megegyező eredmény érhető el ezzel a megoldással, amely nem támaszkodik külső könyvtárakra.

Adott osztályú cellák számlálása és modális kiváltása

Ez a metódus megszámolja az adott osztályú elemeket, és dinamikusan osztályokat rendel hozzájuk a segítségével jQuery. Ezután megnyit egy modális ablakot.

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

Alternatív megoldás: Vanilla JavaScript használata az aktív sejtek megszámlálásához

Ahelyett, hogy harmadik féltől származó könyvtárakra hagyatkozna, mint például a jQuery, ez a megoldás hozzáad egy osztályt, és a cellákat a tiszta 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;
});

Háttér-megközelítés: Node.js és Express használata EJS-sablonnal

Ez Node.js példahasználatok EJS sablon hogy a cellaszámot modális ablakban jelenítse meg, miközben szerveroldali cellákat számlál.

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

Egységtesztelés a Jest for Backend Solution segítségével

Itt egységteszteket fejlesztünk a Node.js megoldáshoz Tréfa hogy az aktív számlálási logika rendeltetésszerűen működjön.

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

A cellakiválasztás és az osztálykezelés bővítése a JavaScriptben

Dolgozik vele JavaScript és HTML táblázatok magában foglalja az osztályok dinamikus módosításának lehetőségét is a felhasználói bevitel vagy tartalom alapján. Többet is tehet, mint pusztán a sejteket számolni; kezelheti a felhasználói beviteleket is, és azonnal módosíthatja a táblázat tartalmát. Például olyan módszerekkel, mint removeClass() jQuery-ben ill classList.remove() a vanilla JavaScriptben dinamikusan módosíthatja az osztályt, kiemelheti vagy akár eltávolíthatja az osztályt, amikor a felhasználó rákattint egy táblázatcellára. Ennek köszönhetően a táblázatok lényegesen interaktívabbakká válnak, és a tartalom valós idejű frissítésén alapuló további testreszabás lehetséges.

Ehhez hasznos lehet egy valós idejű adatokat megjelenítő táblázat, ahol az egyes cellákat vizuálisan el kell különíteni az osztályváltozástól függően. Az ilyen módosításokat okozó függvényeket eseményfigyelők segítségével egyszerűen össze lehet kötni. Például JavaScriptben használhatja addEventListener() bizonyos cellákon zajló események, például kattintások vagy billentyűlenyomások figyelésére. További osztálymódosítások vagy akár frissítések egy számlálóhoz, amely tükrözi a számát aktív a táblázat cellái ebből a kölcsönhatásból származhatnak.

Elgondolkodhat azon helyzeteken is, amikor a cellák automatikusan frissülnek, a felhasználó bármiféle bevitele nélkül. A táblázat tartalma intervallumon vagy AJAX-hívásokon keresztül folyamatosan frissíthető és figyelhető. A reguláris kifejezések és módszerek, mint pl setInterval() lehetővé teszi a táblázat számára, hogy automatikusan megváltoztassa az osztályait, és elindítson egy modált, amikor elér egy küszöböt. A táblázatok mostantól dinamikusabb alkalmazásokban is használhatók, például irányítópultokban és adatvezérelt beállításokban.

Gyakran ismételt kérdések a JavaScript osztálykezelésével és a cellaszámlálással kapcsolatban

  1. A vanília JavaScriptben hogyan tudom megszámolni az adott osztályhoz tartozó összetevőket?
  2. Az adott osztályhoz tartozó összes elem kijelöléséhez használja a document.querySelectorAll('.className'); megszámolni őket, használni length.
  3. A táblázatcella tartalma alapján hogyan tudok hozzá osztályt adni?
  4. Használhat egy osztályt classList.add() és a segítségével ellenőrizze egy cella tartalmát textContent vagy innerText tulajdonságait.
  5. Mi különbözteti meg text() in vanília JavaScript from textContent a jQuery-ben?
  6. textContent egy natív JavaScript tulajdonság, és text() egy jQuery metódus, amely lekéri vagy módosítja a kiválasztott elemek tartalmát.
  7. Amikor egy adott osztályhoz tartozó cellákat számolunk, hogyan indíthatok modált?
  8. Ha modálist szeretne létrehozni a jQueryben, és aktiválni szeretné az adott osztályhoz tartozó elemek számától, használja a .dialog().
  9. JavaScriptben hogyan tudok osztályt kivenni egy elemből?
  10. Vanília JavaScriptben használhatja classList.remove('className') osztály eltávolításához egy elemből.

Utolsó gondolatok a sejtszámlálásról és a modálokról

A JavaScript vagy a jQuery használható meghatározott osztályú cellák számlálásának kezelésére, pl aktív, hatékony módon. A reguláris kifejezések hasznos eszközök a táblázattartalom mintáinak azonosítására, ami megkönnyíti a dinamikus osztály-hozzárendeléseket és egyéb interakciókat.

Ezenkívül egy hasznos módszer a felhasználók tájékoztatására a tábla állapotáról, ha az aktív cellák száma alapján modálist kezdeményezünk. A .párbeszéd() függvény a jQuery-ben vagy egy egyéni modális két olyan módszer, amelyek sokoldalúságot biztosítanak a táblázattartalom kezelésében.

Források és hivatkozások
  1. Az osztályok dinamikus hozzáadásával és a tartalom JavaScript és jQuery használatával történő kezelésével kapcsolatos információk a következő címen elérhető részletes útmutatóból származnak. jQuery API dokumentáció .
  2. A JavaScriptben a reguláris kifejezések tartalom manipulálására való használatára vonatkozó betekintések a következő címen található dokumentációból származnak MDN Web Docs .
  3. A jQuery UI Dialog módszerrel történő modális létrehozás és annak részletes használata a címen tekinthető meg jQuery UI párbeszédpanel dokumentációja .
  4. A JavaScript-ben meghatározott osztályokkal rendelkező elemek megszámlálásának fontosságát és a gyakorlati példákat olyan cikkekben tekinthetjük át, mint például FreeCodeCamp JavaScript útmutató .