Kaip naudoti konkrečią „JavaScript“ klasę lentelės langeliams skaičiuoti

Kaip naudoti konkrečią „JavaScript“ klasę lentelės langeliams skaičiuoti
Kaip naudoti konkrečią „JavaScript“ klasę lentelės langeliams skaičiuoti

Modalo suaktyvinimas su aktyvių klasių skaičiumi lentelėje

Dirbdami su kiekvieno langelio turiniu galite pritaikyti tinkintą elgseną HTML lentelės. Pavyzdžiui, galite naudoti konkrečius šablonus arba kriterijus, kad dinamiškai priskirtumėte klases lentelės langeliams. Dėl to jūsų lentelė gali tapti naudingesnė ir patrauklesnė.

Šiame pavyzdyje lentelės langeliai, atitinkantys tam tikrus reikalavimus, turės klasę, pavadintą aktyvus pridėta prie jų. A JavaScript Tam naudojama funkcija, kuri ištiria kiekvieną langelį, patikrina jos turinį ir tada tinkamai pritaiko klasę. Tai produktyvus būdas organizuoti tam tikras ląsteles pagal jų duomenis.

Pritaikius aktyvus klasę į langelių poaibį, dažnas kitas žingsnis gali būti ląstelių, turinčių šią klasę, skaičiaus skaičiavimas. Jei norite pradėti įvykį ar veiksmą, toks modalo, rodančio skaičių, atidarymas, šių langelių suskaičiavimas gali būti labai naudingas.

Ši pamoka išmokys jus naudoti „JavaScript“, kad būtų galima suskaičiuoti langelių, turinčių „ aktyvus klasę ir automatiškai paleisti modalą, rodantį skaičių. Naudojant jQuery, sprendimas yra paprastas, efektyvus ir lengvai įgyvendinamas.

komandą Naudojimo pavyzdys
.each() Kiekvienas suderintų elementų rinkinio elementas yra kartojamas naudojant šią „jQuery“ funkciją. Taiko sąlyginę logiką arba klases, kartodamas kiekvieną lentelės langelį () in our example.
addClass() The selected items receive one or more class names added to them by this jQuery method. The script applies the aktyvus arba jokios klasę į ląsteles pagal jų turinį.
.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 langelis atitinka tam tikrą modelį.
RegExp() Reguliarios išraiškos daromos naudojant šį JavaScript konstruktorių. Scenarijus gali priskirti klases pagal turinį, identifikuodamas šablonus, pvz skaičiai, po kurių rašomos didžiosios raidės arba c, po kurio seka skaitmenys.
classList.add() Ši pagrindinė „JavaScript“ technika suteikia elementui tam tikrą klasę. Jis veikia panašiai kaip jQuery addClass() vanilla JavaScript sprendime, pridedant aktyvus arba jokios klasė, priklausomai nuo sąlygų.
DOMContentLoaded Kai HTML dokumentas baigiamas įkelti ir analizuoti, suaktyvinamas įvykis DOMContentLoaded. „Vanilla JavaScript“ pavyzdyje jis užtikrina, kad scenarijus būtų vykdomas baigus DOM įkėlimą.
querySelectorAll() Ši „JavaScript“ funkcija grąžina kiekvieną dokumento elementą, atitinkantį nurodytą CSS parinkiklį. Pagrindiniame „JavaScript“ pavyzdyje jis naudojamas norint pasirinkti kiekvieną element in the table for further processing.
už kiekvieną () 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.

Scenarijaus supratimas: ląstelių skaičiavimas ir modalo suaktyvinimas

Pirmajame scenarijaus pavyzdyje kiekvienas lentelės langelis kartojamas, jo turinys įvertinamas ir klasė priskiriama priklausomai nuo įvertinimo naudojant jQuery. Ši funkcija pasiekiama kartojant kiekvieną iš lentelės elementai naudojant .each() metodas. Reguliarūs posakiai yra naudojami taikant du sąlyginius patikrinimus šioje kilpoje. Šie modeliai nustato, ar kiekvieno langelio turinys atitinka tam tikrą formatą. Ląstelė įgyja aktyvus klasė, jei turinys atitinka šabloną, pvz., skaičių ir didžiąją raidę. Tai būtina, kad ląstelės būtų dinamiškai suskirstytos į kategorijas.

Su RegExp() konstruktorius, sukuriama reguliarioji išraiška, skirta suderinti skaičius, po kurių pateikiamos raidės. Ši technika užtikrina, kad ląstelės su duomenimis, pvz., „1A“ arba „3C“, būtų atpažįstamos ir pažymėtos esama klase. Ląstelė gauna atskirą klasę, vadinamą jokios jei turinys sutampa su kitokiu šablonu, toks „c“, po kurio rašomas skaičius. Tai leidžia tiksliau klasifikuoti duomenis lentelėje. Be to, addClass() metodas garantuoja, kad ląstelės gali pridėti šias klases neištrinant jau turimų klasių.

Kitas žingsnis yra suskaičiuoti atitinkamas ląsteles ir pradėti modalą, kai visos jos bus pažymėtos aktyvia klase. Kiekvieną kartą, kai langelis gauna aktyvią klasę, skaičius didėja ir išsaugomas kintamajame pavadintame aktyvus skaičius. Tinkamų langelių skaičius lentelėje turi būti nustatytas naudojant šį skaičių. Naudojant .dialog() funkcija iš jQuery UI, modalas sugeneruojamas, kai skaičiavimas baigtas. The automatinis atidarymas: tiesa atributas leidžia modalui atsidaryti automatiškai. Aktyvių ląstelių skaičius rodomas modalo viduje.

Antruoju atveju identiškai procedūrai dubliuoti naudojamas vanilinis JavaScript. querySelectorAll() Šis metodas naudojamas vietoje jQuery, kad būtų galima pasirinkti visus lentelės langelius, ir tai yra paprasta už kiekvieną () ciklas kartojasi per kiekvieną langelį. Reguliarios išraiškos naudojamos langelio turiniui suderinti, kaip ir jQuery sprendime. Jei aptinkama atitiktis, aktyvus skaičius atnaujinamas ir aktyvi klasė pridedama naudojant classList.add() metodas. Galiausiai, pakeitus DOM iš anksto nustatyto modalinio elemento vidinį HTML, modalas suaktyvinamas. Naudojant šį sprendimą, kuris nepriklauso nuo išorinių bibliotekų, pasiekiamas toks pat rezultatas, kaip ir jQuery pavyzdyje.

Ląstelių su konkrečia klase skaičiavimas ir modalo suaktyvinimas

Šis metodas skaičiuoja elementus, turinčius tam tikrą klasę, ir dinamiškai priskiria jiems klases jQuery. Tada atidaromas modalinis langas.

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

Alternatyva: aktyvioms ląstelėms skaičiuoti naudokite „Vanilla JavaScript“.

Užuot pasikliavę trečiųjų šalių bibliotekomis, tokiomis kaip „jQuery“, šis sprendimas prideda klasę ir skaičiuoja langelius grynas 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;
});

Backend Approach: Node.js ir Express naudojimas su EJS šablonu

Tai Node.js naudojimo pavyzdžiais EJS šablonas Norėdami pateikti ląstelių skaičių modaliniame lange, skaičiuojant ląsteles serverio pusėje.

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

Įrenginio testavimas naudojant „Jest for Backend Solution“.

Čia mes kuriame Node.js sprendimo vienetų testus naudodami Juokas kad aktyvaus skaičiavimo logika veiktų taip, kaip numatyta.

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

„JavaScript“ langelių pasirinkimo ir klasių tvarkymo išplėtimas

Darbas su JavaScript ir HTML lentelės taip pat apima galimybę dinamiškai modifikuoti klases, reaguojant į vartotojo įvestį ar turinį. Galite ne tik suskaičiuoti ląsteles; taip pat galite tvarkyti vartotojo įvestis ir akimirksniu pakeisti lentelės turinį. Pavyzdžiui, naudojant tokius metodus kaip removeClass() jQuery arba classList.remove() „vanilla JavaScript“ galite dinamiškai modifikuoti klasę, paryškinti ar net pašalinti klasę, kai vartotojas spustelėja lentelės langelį. Dėl to lentelės tampa daug interaktyvesnės, todėl galimas tolesnis tinkinimas, pagrįstas turinio atnaujinimais realiuoju laiku.

Lentelė, kurioje rodomi realaus laiko duomenys, kai tam tikros ląstelės turi būti vizualiai atskirtos, atsižvelgiant į klasės pakeitimą, būtų naudingas atvejis. Naudojant įvykių klausytojus paprasta susieti funkcijas, kurios sukelia šiuos pakeitimus. Pavyzdžiui, „JavaScript“ galite naudoti addEventListener() klausytis įvykių tam tikrose ląstelėse, pvz., paspaudimų ar klavišų paspaudimų. Papildomos klasės modifikacijos ar net skaitiklio atnaujinimai, atspindintys skaičių aktyvus lentelės langeliai gali atsirasti dėl šios sąveikos.

Taip pat galite pagalvoti apie situacijas, kai langeliai turėtų būti atnaujinami automatiškai be vartotojo įvesties. Lentelės turinį galima atnaujinti ir nuolat stebėti intervalais arba AJAX skambučiais. Reguliarūs posakiai ir metodai, pvz setInterval() leisti lentelei automatiškai keisti klases ir paleisti modalą, kai pasiekiamas slenkstis. Dabar lenteles galima naudoti dinamiškesnėse programose, pvz., prietaisų skydeliuose ir duomenimis pagrįstuose nustatymuose.

Dažnai užduodami klausimai apie „JavaScript“ klasių tvarkymą ir langelių skaičiavimą

  1. Kaip suskaičiuoti komponentus, priklausančius tam tikrai klasei, naudojant vanilinį JavaScript?
  2. Norėdami pasirinkti kiekvieną elementą su ta klase, naudokite document.querySelectorAll('.className'); juos suskaičiuoti, naudoti length.
  3. Pagal lentelės langelio turinį, kaip prie jo pridėti klasę?
  4. Galite taikyti klasę naudodami classList.add() ir patikrinkite ląstelės turinį naudodami textContent arba innerText savybių.
  5. Kas išskiria text() vanilėje JavaScript iš textContent jQuery?
  6. textContent yra vietinė JavaScript nuosavybė ir text() yra jQuery metodas, kuris nuskaito arba pakeičia pasirinktų elementų turinį.
  7. Skaičiuojant langelius, priklausančius tam tikrai klasei, kaip pradėti modalą?
  8. Norėdami sukurti modalą programoje „jQuery“ ir paleisti, kad jis priklausytų nuo elementų skaičiaus tam tikroje klasėje, naudokite .dialog().
  9. Kaip naudoti „JavaScript“ elemento klasę?
  10. „Vanilla JavaScript“ galite naudoti classList.remove('className') pašalinti klasę iš elemento.

Paskutinės mintys apie ląstelių skaičiavimą ir modalus

„JavaScript“ arba „jQuery“ gali būti naudojami tvarkyti skaičiuojant langelius su nurodyta klase, pvz aktyvus, efektyviu būdu. Reguliarios išraiškos yra naudingas įrankis lentelės turinio šablonams identifikuoti, o tai palengvina dinaminį klasių priskyrimą ir kitą sąveiką.

Be to, naudingas būdas informuoti vartotojus apie lentelės būseną yra inicijuoti modalą pagal šių aktyvių langelių skaičių. The .dialog() funkcija jQuery arba pasirinktinis modalas yra du metodai, kurie suteikia daug universalumo tvarkant lentelės turinį.

Šaltiniai ir nuorodos
  1. Informacija apie dinaminį klasių pridėjimą ir turinio tvarkymą naudojant „JavaScript“ ir „jQuery“ buvo gauta iš išsamaus vadovo, kurį rasite adresu jQuery API dokumentacija .
  2. Įžvalgos, kaip naudoti reguliariąsias „JavaScript“ išraiškas manipuliuojant turiniu, buvo pateiktos iš dokumentacijos, esančios adresu MDN žiniatinklio dokumentai .
  3. Modalinį kūrimą naudojant „jQuery UI Dialog“ metodą ir išsamų jo naudojimą galima ištirti adresu jQuery UI dialogo dokumentacija .
  4. Elementų su konkrečiomis klasėmis JavaScript svarba ir praktiniai pavyzdžiai gali būti apžvelgti tokiuose straipsniuose kaip FreeCodeCamp JavaScript vadovas .