Tikslus pirkinių krepšelio skaitiklių įvesties elementų verčių atnaujinimas „JavaScript If-Else“ teiginiuose

Tikslus pirkinių krepšelio skaitiklių įvesties elementų verčių atnaujinimas „JavaScript If-Else“ teiginiuose
Tikslus pirkinių krepšelio skaitiklių įvesties elementų verčių atnaujinimas „JavaScript If-Else“ teiginiuose

Veiksmingi „JavaScript“ skaitiklio atnaujinimai keliems produktams

Gali būti sudėtinga dirbti su „JavaScript“ dinaminiais įvesties elementais, ypač kai sąlygiškai atnaujinate reikšmes viduje jei-kitaip pareiškimus. Tiksliai įrašyti bendras sumas ir sumas labai svarbu tokiose situacijose, kaip prekių įtraukimas į internetinį pirkinių krepšelį. Tačiau kelių dalykų valdymas šioje situacijoje kūrėjams dažnai sukelia sunkumų.

Šiame įraše bus aptarta paplitusi problema, kai pasirinkus naujus daiktus pirkinių krepšelyje iš naujo nustatomas anksčiau pasirinktų prekių skaitiklis. Atrodo, kad perkeliant elementus skaitikliai nustatomi iš naujo, nors iš pradžių jie veikia tinkamai. Naudotojus glumina toks elgesys, nes ne visi krepšelyje esantys produktai atitinka tinkamus kiekius.

Peržiūrėsime kodo pavyzdį, kuriame iškyla ši problema, ir aptarsime priežastį. Norint sklandžiai veikti, labai svarbu žinoti, kaip kontroliuoti kiekvieno gaminio skaitiklį ir užtikrinti, kad visi įvesties skaičiai išliks pastovūs. Su keliais pataisymais, jei-kitaip „JavaScript“ logiką naudojantys teiginiai gali tai tinkamai tvarkyti.

Kai baigsite skaityti šį straipsnį, žinosite, kaip išspręsti problemą ir išsaugoti visus skaitiklius, taip užtikrindami, kad jūsų pirkinių krepšelyje visada būtų rodoma teisinga kiekvienos prekės suma, net kai pereisite tarp jų.

komandą Naudojimo pavyzdys
cart = {} Apibrėžia tuščią krepšelio prekių skaitiklio saugojimo objektą. Naudodami šį objektą galite dinamiškai sekti kiekvieno produkto sumas ir kiekius, nereikės iš naujo nustatyti būsenos keičiant elementus.
updateCart(item, price, counterKey) Originali funkcija, kuri keičia krepšelį kiekvieną kartą spustelėjus prekę. Norint atnaujinti skaičių ir sumą, reikalingi prekės pavadinimo, kainos parametrai ir specialus kiekvienos prekės raktas.
cart[counterKey] Prieina arba prideda ypatybę (pvz., „miloCounter“) prie kiekvienos prekės krepšelio objekto. Jis inicijuoja raktą, jei jo dar nėra, užtikrinant, kad skaičius padidėtų tik tam konkrečiam produktui.
renderCart() Funkcija, kuri kartojasi per kiekvieną krepšelio prekę, kad turinys būtų dinamiškai pateikiamas. Kad būtų rodomos produktų sumos ir kiekiai, jis sugeneruoja reikiamą HTML ir ieško nulinių skaitiklių.
for (var item in cartItems) Kartojasi kiekvienai krepšelyje esančiai prekei. Pasiekite išsamią produkto informaciją ir įsitikinkite, kad visi pasirinkti produktai atsispindi krepšelyje, naudodami elementų objektą. Prieš pateikiant šią kilpą nustatomas kiekvieno elemento skaičius.
document.getElementById() Parenka HTML komponentus (pvz., „milo“ ir „ovaltine“) pagal atskirą jų ID. Tai leidžia prijungti vartotojo sąsają su „JavaScript“ logika, pridedant įvykių klausytojus sąveikai su kiekvienu krepšelyje esančiu produktu.
console.assert() Naudojamas mėginio vieneto teste bandymams. Jis patikrina, ar tikrosios vertės krepšelyje atitinka numatomas vertes (pvz., „milo“ skaičius). Jei bandymas nepavyksta, konsolėje pasirodo klaida, kuri padeda nustatyti problemą.
innerHTML += Prideda naują HTML turinį į jau egzistuojantį elementą, pvz., lentelės eilutę krepšelyje. Taikant šią techniką, nauji prekių įrašai gali būti dinamiškai įtraukti į pirkinių krepšelį, neištrinant esamo turinio.
addEventListener('click') Prie kiekvieno produkto mygtuko arba paveikslėlio prideda paspaudimo įvykių klausytoją. Susieta funkcija suaktyvinama, kai vartotojas spusteli prekę, dinamiškai keičiant krepšelio kiekius ir sumas.

Dinaminio krepšelio atnaujinimo problemų sprendimas naudojant „JavaScript“.

Pirmiau minėti scenarijai išsprendžia dažną problemą, kai naudojate „JavaScript“ kelių prekių krepšelyje tvarkyti. Pagrindinė problema yra ta, kad pridėjus naują elementą iš naujo nustatomi anksčiau pridėtų elementų skaitikliai. Scenarijuose naudojamas objektas pagrįstas metodas elementų skaičiams ir sumoms saugoti kartu su įvykių klausytojais, kad tai išspręstų. Garantuojame, kad kiekvieno gaminio skaitiklis yra atnaujinamas ir prižiūrimas atskirai nuo kitų, jiems netrukdant naudojant krepšelis objektas. Šis metodas pašalina iš naujo nustatymo problemą, kad kiekvieno produkto skaičius išliktų tikslus.

The atnaujinti krepšelį Metodas, kuris valdo dinamišką produktų įtraukimą į krepšelį, yra esminis sprendimo komponentas. Ši funkcija naudoja unikalų skaitiklio raktą (pvz., „miloCounter“), kad nustatytų, ar prekė yra krepšelyje. Scenarijus inicijuoja skaitiklį, jei elementas pridedamas pirmą kartą. Jei ne, funkcija perskaičiuoja bendrą kainą ir padidina dabartinį skaitiklį. The vidinis HTML atributas atnaujina HTML, kad vartotojas iškart matytų pakeitimus.

Tikslų kiekvienos krepšelyje esančios prekės pateikimą garantuoja renderCart funkcija. Jis kartojasi per krepšelisPrekės objektą, patikrindami, ar kiekvieno produkto skaičius viršija nulį. Tokiu atveju funkcija sukuria reikiamą HTML, kad būtų rodoma kiekvienos prekės suma ir bendra kaina. Tai garantuoja, kad įtraukus naujus produktus nebus perrašomi senieji ir išsaugoma krepšelio rodymo srovė. Internetinėse programose ši technika labai naudinga tvarkant dinaminį turinį.

Be to, konsolė.tvirtinti naudojamas vienetų testuose, siekiant patikrinti, ar prekių skaitikliai ir sumos veikia taip, kaip numatyta. Spustelėję gaminio mygtukus ir įsitikinę, kad laukiamos skaitiklio reikšmės sutampa su faktiniais rezultatais, išsaugotais krepšelis objektas, šie testai imituoja vartotojo sąveiką. Tai garantuoja patikimą samprotavimą ir neleidžia nepastebėti klaidų. Atsižvelgiant į viską, scenarijai suteikia daugkartinį ir modulinį požiūrį į produktų naujinimų valdymą pirkinių krepšelyje, kuriame veikia „JavaScript“.

Dinaminių produktų skaitiklių tvarkymas „JavaScript“ pirkinių krepšelyje

Pagrindinio „JavaScript“ naudojimas dinaminiams krepšelio atnaujinimams

var milo = document.getElementById('milo');
var ovaltine = document.getElementById('ovaltine');
var bournvita = document.getElementById('bournvita');
var miloPrice = 2000.00, miloCounter = 0, miloAmount = 0;
var ovaltinePrice = 1500.00, ovaltineCounter = 0, ovaltineAmount = 0;
var bournvitaPrice = 1850.00, bournvitaCounter = 0, bournvitaAmount = 0;

var cart = {}; // Object to store counters for each item

function updateCart(item, price, counterKey) {
    if (!cart[counterKey]) { cart[counterKey] = 1; } 
    else { cart[counterKey] += 1; }
    var total = cart[counterKey] * price;
    document.getElementById('cartdetails').innerHTML +=
    '<tr><td>' + cart[counterKey] + '</td><td>' + total + '</td></tr>';
}

milo.addEventListener('click', function() { updateCart('milo', miloPrice, 'miloCounter'); });
ovaltine.addEventListener('click', function() { updateCart('ovaltine', ovaltinePrice, 'ovaltineCounter'); });
bournvita.addEventListener('click', function() { updateCart('bournvita', bournvitaPrice, 'bournvitaCounter'); });

Krepšelio elementų atnaujinimų tvarkymas naudojant „JavaScript“ objektus

JavaScript naudojimas su objektiniu būsenos valdymu

var cartItems = {
    'milo': { price: 2000, count: 0, total: 0 },
    'ovaltine': { price: 1500, count: 0, total: 0 },
    'bournvita': { price: 1850, count: 0, total: 0 }
};

function updateCartItem(item) {
    cartItems[item].count += 1;
    cartItems[item].total = cartItems[item].count * cartItems[item].price;
    renderCart();
}

function renderCart() {
    var cartHTML = '';
    for (var item in cartItems) {
        if (cartItems[item].count > 0) {
            cartHTML += '<tr><td>' + cartItems[item].count + '</td><td>' + cartItems[item].total + '</td></tr>';
        }
    }
    document.getElementById('cartdetails').innerHTML = cartHTML;
}

document.getElementById('milo').addEventListener('click', function() { updateCartItem('milo'); });
document.getElementById('ovaltine').addEventListener('click', function() { updateCartItem('ovaltine'); });
document.getElementById('bournvita').addEventListener('click', function() { updateCartItem('bournvita'); });

„JavaScript“ krepšelio skaitiklio funkcionalumo vieneto testas

Paprastų JavaScript funkcijų naudojimas su bandomaisiais atvejais

function testCartCounter() {
    var testCart = { 'milo': 0, 'ovaltine': 0, 'bournvita': 0 };
    function clickProduct(item) { testCart[item] += 1; }
    clickProduct('milo');
    clickProduct('ovaltine');
    console.assert(testCart['milo'] === 1, 'Milo should have 1 count');
    console.assert(testCart['ovaltine'] === 1, 'Ovaltine should have 1 count');
    clickProduct('milo');
    console.assert(testCart['milo'] === 2, 'Milo should have 2 counts');
    console.log('All tests passed');
}

testCartCounter();

Būsenos palaikymas ir skaitiklio atstatymo prevencija „JavaScript“ pirkinių krepšeliuose

Kiekvienos krepšelyje esančios prekės būsenos išlaikymas yra dažnas sunkumas dirbant su dinaminiais pirkinių krepšeliais JavaScript, ypač kai pridedami nauji produktai. Problema dažniausiai kyla, kai įvykių klausytojai iš naujo nustato skaičiavimus, kai perjungia produktus, nes jie nėra tinkamai saugomi arba saugomi kiekvienam produktui. Sukurti visuotinį objektą, kuriame būtų kiekvienos krepšelyje esančios prekės būsena, būtų efektyvesnis būdas tai tvarkyti. Tokiu būdu ankstesnių elementų skaitikliai nesikeičia net spustelėjus naują elementą.

Galite tiesiog pasiekti ir redaguoti kiekvieno produkto kiekį ir kainą be kitų scenarijaus elementų trukdžių, išsaugodami juos visuotiniame objekte, pvz., krepšelisPrekės. Be to, objektas pagrįstas metodas siūlo gerai apibrėžtą struktūrą, kuri palengvina kelių elementų valdymą vienu metu. Atitinkama objekto dalis keičiama kiekvieną kartą spustelėjus prekę, o modifikacijos akimirksniu parodomos pirkinių krepšelio sąsajoje.

Taip pat labai svarbu įsitikinti, kad ankstesnės prekių būsenos yra patikrintos ir palaikomos kiekvieną kartą pateikiant ar atnaujinant krepšelį. Norėdami tai padaryti, pateikite krepšelį naudodami naujausius duomenis, saugomus krepšelisPrekės objektas. Šis metodas garantuoja, kad visos krepšelyje esančios prekės rodo teisingus skaičius ir sumas net ir pridėjus ar pašalinus prekes, išvengiant ankstesnių duomenų perrašymo problemos.

Dažnai užduodami klausimai apie „JavaScript“ pirkinių krepšelio logiką

  1. Kaip sustabdyti skaitiklių pradžią iš naujo, kai perkeliau daiktus?
  2. Norėdami išvengti skaitiklio nustatymų iš naujo, galite įrašyti kiekvienos prekės bendras sumas ir kiekius atskirai naudodami visuotinį objektą, pvz., cartItems.
  3. Kai į krepšelį įdedu naują prekę, kodėl ji perrašo ankstesnius įrašus?
  4. Taip nutinka, kai kodas pakeičia pradinį krepšelio HTML. Norėdami tai ištaisyti, pridėkite naujų elementų naudodami innerHTML += nepašalinant esamų.
  5. Koks yra geriausias būdas dinamiškai atnaujinti krepšelį?
  6. Norėdami įsitikinti, kad krepšelis visada yra atnaujintas su JavaScript duomenimis, naudokite tokią funkciją kaip renderCart kuris kartoja visas krepšelio prekes ir keičia ekraną.
  7. Kaip patikrinti, ar mano skaitikliai veikia tinkamai?
  8. Norėdami padėti nustatyti problemas, naudokite console.assert kad patikrintumėte, ar jūsų krepšelio skaičiai rodo tinkamas reikšmes po kiekvienos sąveikos.
  9. Ar galima tą patį kodą pritaikyti skirtingiems produktams?
  10. Taip, galite valdyti bet kokio prekių skaičiaus logiką su minimaliais pakeitimais moduliuodami kodą ir naudodami tokias funkcijas kaip updateCart.

Paskutinės mintys apie „JavaScript“ skaitiklio atstatymo prevenciją

Dinaminio krepšelio būsenos išsaugojimo paslaptis – objekte išsaugoti konkrečios prekės informaciją, pvz., sumas ir skaitiklius. Ši technika užtikrina, kad ankstesnių gaminių vertė išliktų tiksli, net kai pristatomi nauji produktai. Išvengta skaitiklių atstatymo į vieną problemą.

Vartotojo patirtis dar labiau pagerinama dinamiškai atvaizduojant krepšelį naudojant saugomus duomenis. Naudojant šį metodą, krepšelis tampa jautresnis ir interaktyvesnis, o produktų kainos ir kiekiai atnaujinami, kad atspindėtų esamą vartotojo sąveiką.

„JavaScript“ dinaminių krepšelių skaitiklių nuorodos ir ištekliai
  1. Išsamios įžvalgos apie JavaScript naudojimą jei-kitaip sąlygos ir DOM elementų atnaujinimas, apsilankykite MDN žiniatinklio dokumentai – jei...kitaip .
  2. Sužinokite daugiau apie dinaminio turinio tvarkymą ir HTML elementų atnaujinimą naudojant „JavaScript“ adresu W3Schools – JavaScript HTML DOM .
  3. Norėdami išspręsti su skaitikliu ir krepšeliu susijusias problemas „JavaScript“ programose, skaitykite šį vadovą Stack Overflow – skaitiklis atkuria JavaScript .
  4. Ištirkite geriausią praktiką, kaip struktūrizuoti objektais pagrįstą krepšelio logiką „JavaScript“, naudodami šią mokymo programą JavaScript.info – Objekto pagrindai .