亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Jadual Kandungan
Analisis masalah
Penyelesaian: Leverage Dom Traversal dan atribut data
Contoh kod
Pertimbangan Struktur HTML
Meringkaskan
Rumah hujung hadapan web html tutorial JavaScript Shopping Cart Kuantiti Peningkatan dan Pengurangan Fungsi: Selesaikan masalah hanya berkuat kuasa pada elemen pertama

JavaScript Shopping Cart Kuantiti Peningkatan dan Pengurangan Fungsi: Selesaikan masalah hanya berkuat kuasa pada elemen pertama

Oct 15, 2025 pm 03:48 PM

JavaScript Shopping Cart Kuantiti Peningkatan dan Kurangkan Fungsi: Selesaikan Masalah Hanya Berkesan pada Elemen Pertama

Artikel ini bertujuan untuk menyelesaikan masalah bahawa kuantiti keranjang belanja JavaScript meningkat dan mengurangkan fungsi hanya berkuatkuasa pada elemen pertama pada halaman. Dengan menganalisis penyebab kesilapan biasa dan menyediakan penyelesaian pengoptimuman menggunakan atribut DOM Traversal dan data, kami membantu pemaju melaksanakan fungsi kawalan kuantiti keranjang belanja yang mudah digunakan, mudah dan cekap. Pada masa yang sama, artikel ini juga menunjukkan struktur tidak sah dalam kod HTML yang asal dan memberikan cadangan untuk pembetulan.

Apabila menggunakan JavaScript untuk membangunkan gerai belanja atau komponen lain yang memerlukan kawalan dinamik kuantiti, pemaju sering menghadapi masalah: Kod hanya berkuatkuasa pada elemen pertama pada halaman, tetapi tidak pada unsur -unsur berulang berikutnya. Masalah ini biasanya berpunca daripada penggunaan yang tidak betul dari kaedah QuerySelector dan QuerySelectorall, dan cara pendengar acara terikat.

Analisis masalah

Kod asal menggunakan QuerySelector untuk mendapatkan elemen halaman, yang hanya akan mengembalikan elemen pertama yang sepadan dengan pemilih. Walaupun QuerySelectorall digunakan, kod berikutnya masih mensasarkan elemen pertama yang diperoleh melalui QuerySelector, mengakibatkan unsur -unsur berikutnya tidak dapat bertindak balas terhadap peristiwa. Di samping itu, menulis fungsi pengendalian acara berasingan bagi setiap elemen akan menyebabkan redundansi kod dan tidak kondusif untuk penyelenggaraan.

Penyelesaian: Leverage Dom Traversal dan atribut data

Penyelesaian yang lebih elegan dan diselenggarakan adalah menggunakan atribut DOM Traversal dan data untuk memusnahkan logik pengendalian peristiwa dari contoh elemen tertentu.

  1. Nama kelas bersatu: Gunakan nama kelas yang sama untuk semua elemen yang memerlukan fungsi yang sama. Sebagai contoh, semua butang "ditambah" diberikan nama kelas PQT-Plus, semua butang "tolak" diberikan nama kelas PQT-Minus, unsur-unsur yang digunakan untuk memaparkan kuantiti diberikan nama kelas tambahan, dan div yang mengandungi keseluruhan kawasan kawalan kuantiti diberikan nama kelas PLS-Moins.

  2. DOM Traversal: Dalam fungsi pengendalian acara, gunakan kaedah e.target.closest () untuk mencari elemen ibu bapa yang terdekat (contohnya, div yang mengandungi keseluruhan kawasan kawalan kuantiti), dan kemudian gunakan QuerySelector () untuk mencari elemen yang perlu dikendalikan dalam julat elemen parent (contohnya, span yang membuang kuantiti).

  3. Atribut data: Gunakan atribut data-* untuk menyimpan maklumat tambahan mengenai elemen HTML. Sebagai contoh, anda boleh menetapkan data-inc = "1" pada butang "plus" dan data-inc = "-1" pada butang "tolak" untuk mewakili kenaikan kuantiti.

Contoh kod

Berikut adalah kod sampel menggunakan Dom Traversal dan atribut data:

 <div class="d-flex lign-items-center pls-moins">
  <span class="Count-Number Float-Right">
    <butang jenis="butang" class="btn-sm kiri dec btn btn-outline-secondary pqt-minus" data-inc="-1">
      <i class="Feather -Minus"> </i> -
    </butang>
    <span class="cart-button">
      <span class="tambah"> 0 </span>
    </span>
    <butang jenis="butang" class="BTN-SM RIGHT INC BTN BTN-OUTLINE-SECONDARY PQT-PLUS" data-inc="1">
      <i class="Feather-Plus"> </i>  
    </butang>
  </span>
</div>

<div class="d-flex lign-items-center pls-moins">
  <span class="Count-Number Float-Right">
    <butang jenis="butang" class="btn-sm kiri dec btn btn-outline-secondary pqt-minus" data-inc="-1">
      <i class="Feather -Minus"> </i> -
    </butang>
    <span class="cart-button">
      <span class="tambah"> 0 </span>
    </span>
    <butang jenis="butang" class="BTN-SM RIGHT INC BTN BTN-OUTLINE-SECONDARY PQT-PLUS" data-inc="1">
      <i class="Feather-Plus"> </i>  
    </butang>
  </span>
</div>

<div class="d-flex lign-items-center pls-moins">
  <span class="Count-Number Float-Right">
    <butang jenis="butang" class="btn-sm kiri dec btn btn-outline-secondary pqt-minus" data-inc="-1">
      <i class="Feather -Minus"> </i> -
    </butang>
    <span class="cart-button">
      <span class="tambah"> 0 </span>
    </span>
    <butang jenis="butang" class="BTN-SM RIGHT INC BTN BTN-OUTLINE-SECONDARY PQT-PLUS" data-inc="1">
      <i class="Feather-Plus"> </i>  
    </butang>
  </span>
</div>

<div class="d-flex lign-items-center pls-moins">
  <span class="Count-Number Float-Right">
    <butang jenis="butang" class="btn-sm kiri dec btn btn-outline-secondary pqt-minus" data-inc="-1">
      <i class="Feather -Minus"> </i> -
    </butang>
    <span class="cart-button">
      <span class="tambah"> 0 </span>
    </span>
    <butang jenis="butang" class="BTN-SM RIGHT INC BTN BTN-OUTLINE-SECONDARY PQT-PLUS" data-inc="1">
      <i class="Feather-Plus"> </i>  
    </butang>
  </span>
</div>
 document.QuerySelectorAll (". btn-sm"). foreach (btn => {
  btn.addeventListener ('klik', e => {
    biarkan total = e.target.closest ('.
    total.TextContent = Math.Max ??(0, ParseInt (total.TextContent, 10) ParseInt (e.currentTarget.dataset.inc, 10));
  });
});

Kod ini mula-mula memilih semua elemen dengan nama kelas BTN-SM, dan kemudian menambah pendengar acara klik ke setiap elemen. Dalam fungsi pengendali acara, E.Target menunjuk ke elemen yang mencetuskan peristiwa (iaitu, butang yang diklik). e.target.closest ('. QuerySelector ('. Ditambah') mendapati bilangan elemen span yang dipaparkan dalam skop elemen induk. Akhirnya, dapatkan nilai atribut data-inci pada butang melalui e.currenttarget.dataset.inc dan kemas kini kuantiti. Math.max (0, ...) memastikan bahawa kuantiti tidak akan kurang daripada 0.

Pertimbangan Struktur HTML

Terdapat struktur HTML yang tidak sah dalam kod asal: elemen Div tidak boleh diletakkan terus di dalam elemen span. Div harus digantikan dengan rentang atau elemen lain yang sesuai untuk memastikan HTML yang sah. Dalam kod sampel di atas, elemen div yang mengandungi kuantiti telah digantikan dengan elemen span.

Meringkaskan

Dengan menggunakan atribut DOM Traversal dan data, anda boleh menulis kod JavaScript yang lebih mudah dan lebih mudah untuk mencapai fungsi kawalan kuantiti keranjang belanja yang boleh diguna semula. Elakkan menggunakan QuerySelector untuk secara langsung memilih beberapa elemen pendua. Sebaliknya, gunakan delegasi acara dan Dom Traversal untuk mengendalikan elemen yang berkaitan. Pada masa yang sama, perhatikan kesahihan struktur HTML dan elakkan bersarang tidak sah. Kaedah ini bukan sahaja dapat menyelesaikan masalah bahawa kuantiti keranjang membeli -belah meningkatkan atau mengurangkan fungsi hanya berkuatkuasa pada elemen pertama, tetapi juga boleh digunakan untuk senario lain yang memerlukan kawalan dinamik elemen halaman.

Atas ialah kandungan terperinci JavaScript Shopping Cart Kuantiti Peningkatan dan Pengurangan Fungsi: Selesaikan masalah hanya berkuat kuasa pada elemen pertama. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Stock Market GPT

Stock Market GPT

Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Petua CSS: Tepat menyembunyikan kandungan teks tertentu tanpa menjejaskan elemen ibu bapa Petua CSS: Tepat menyembunyikan kandungan teks tertentu tanpa menjejaskan elemen ibu bapa Sep 16, 2025 pm 10:54 PM

Tutorial ini memperincikan cara menggunakan CSS untuk menyembunyikan kandungan teks tertentu dengan tepat di halaman HTML untuk mengelakkan masalah seluruh elemen induk yang tersembunyi kerana pemilih yang tidak betul. Dengan menambah kelas CSS eksklusif ke elemen pembalut teks sasaran dan menggunakan paparan: tiada; Atribut, pemaju boleh mencapai kawalan halus elemen halaman, memastikan bahawa hanya bahagian yang diperlukan tersembunyi, dengan itu mengoptimumkan susun atur halaman dan pengalaman pengguna.

Tangkap peristiwa mousedown dengan elemen induk yang mengandungi iframes silang domain: prinsip dan batasan Tangkap peristiwa mousedown dengan elemen induk yang mengandungi iframes silang domain: prinsip dan batasan Sep 20, 2025 pm 11:00 PM

Artikel ini meneroka cabaran menangkap peristiwa mousedown pada div ibu bapa yang mengandungi iframes domain. Masalah teras ialah dasar keselamatan pelayar (dasar asal usul) menghalang acara langsung DOM mendengar kandungan iframe silang domain. Jenis penangkapan acara ini tidak dapat dicapai melainkan nama domain sumber iframe dikawal dan CORS dikonfigurasi. Artikel ini akan menerangkan mekanisme keselamatan secara terperinci dan batasan mereka mengenai interaksi peristiwa dan memberikan alternatif yang mungkin.

Melaksanakan Stacking Unsur Vertikal dalam Layout Bootstrap Flexbox: Dari sisi ke Lapisan Melaksanakan Stacking Unsur Vertikal dalam Layout Bootstrap Flexbox: Dari sisi ke Lapisan Sep 21, 2025 pm 10:42 PM

Apabila menggunakan bootstrap untuk susun atur laman web, pemaju sering menghadapi masalah elemen yang dipaparkan bersebelahan dan bukannya disusun secara vertikal secara lalai, terutamanya apabila bekas induk menggunakan susun atur Flexbox. Artikel ini akan meneroka cabaran susun atur yang sama dengan mendalam dan memberikan penyelesaian: dengan menyesuaikan atribut flex-arah dari bekas flex ke lajur, menggunakan kelas alat Flex-Column Bootstrap untuk mencapai susunan menegak yang betul dari tag H1 dan blok kandungan seperti bentuk, memastikan struktur halaman memenuhi jangkaan.

Bagaimana membuat teks membungkus imej dalam html? Bagaimana membuat teks membungkus imej dalam html? Sep 21, 2025 am 04:02 AM

USECSSSFLOOPROPERTYTOWRAPTEXTAROUNIMAGE: FloatLeftFortExtOntHeright, FloatRightFortExtOnTheLeft, AddMarginforspacing, andClearFloatStOpreventLayOuteSues.

Fungsi luaran JavaScript Panggilan Kesukaran Analisis: Lokasi skrip dan penamaan spesifikasi Fungsi luaran JavaScript Panggilan Kesukaran Analisis: Lokasi skrip dan penamaan spesifikasi Sep 20, 2025 pm 10:09 PM

Artikel ini meneroka dua masalah biasa apabila memanggil fungsi JavaScript luaran dalam HTML: masa pemuatan skrip yang tidak betul menyebabkan unsur-unsur DOM menjadi tidak siap, dan penamaan fungsi mungkin bertentangan dengan peristiwa terbina dalam pelayar atau kata kunci. Artikel ini menyediakan penyelesaian terperinci, termasuk lokasi rujukan skrip tweaking dan mengikuti spesifikasi penamaan fungsi yang baik untuk memastikan kod JavaScript dilaksanakan dengan betul.

Cara menetapkan atribut lang dalam html Cara menetapkan atribut lang dalam html Sep 21, 2025 am 02:34 AM

Setthelangattributeinthehtmltagtospecifypagelanguage, mis., Forenglish;

Bagaimana untuk menambah tooltip pada hover dalam html? Bagaimana untuk menambah tooltip pada hover dalam html? Sep 18, 2025 am 01:16 AM

USetetetitLeatTrBITrBITpetoLToolCUStOM-STyLElyLEtoMSORCUStOM.1.addtitle = "Text" toanyeLementFordefaLtTipips.2.forStyLEdToolTips, wrapTheelememementinAcontainer, uss.toolTipand.tool

Bagaimana untuk membuat hiperpautan ke alamat e -mel di HTML? Bagaimana untuk membuat hiperpautan ke alamat e -mel di HTML? Sep 16, 2025 am 02:24 AM

Usemailto: inhreftocreateemailinks.startwithforbasiclinks, tambah? Subjek = dan & body = forpre-filledContent, andincludemultipleaddressorcc =, bcc = foradvancedOptions.

See all articles