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

目次
問(wèn)題分析
解決策: イベント委任と DOM トラバーサル
要約する
ホームページ ウェブフロントエンド htmlチュートリアル 最初の要素にのみ有効な JavaScript ショッピング カート數(shù)量増減ボタンの解決策

最初の要素にのみ有効な JavaScript ショッピング カート數(shù)量増減ボタンの解決策

Oct 15, 2025 pm 10:39 PM

最初の要素にのみ有効な JavaScript ショッピング カートの數(shù)量増減ボタンの解決策

この記事は、JavaScript がショッピング カートの數(shù)量を増減する関數(shù)を?qū)g裝するときに、ページ內(nèi)の最初の要素にのみ影響するという問(wèn)題を解決することを目的としています。一般的なエラーの原因を分析し、イベント委任と DOM トラバーサルに基づいた最適化ソリューションを提供することで、開(kāi)発者が再利用可能でシンプルかつ効率的なショッピング カート數(shù)量制御機(jī)能を?qū)g裝できるように支援します。同時(shí)に、効果的な HTML 構(gòu)造を記述することの重要性も強(qiáng)調(diào)されます。

ショッピング カートや製品詳細(xì)ページを開(kāi)発する場(chǎng)合、數(shù)量を増減する機(jī)能を?qū)g裝する必要があることがよくあります。よくある間違いは、ページ上に複數(shù)の商品がある場(chǎng)合、JavaScript コードが最初の商品に対してのみ機(jī)能することです。これは通常、コードが最初の要素のみを選択し、複數(shù)の要素を正しく処理しないことが原因です。この記事では、この問(wèn)題を調(diào)査し、より効率的で再利用可能な解決策を提供します。

問(wèn)題分析

最初のコードでは、querySelectorAll を使用してすべてのボタンを取得しようとしましたが、それでも問(wèn)題が発生しました。主な理由は次のとおりです。

  1. セレクターの問(wèn)題:番號(hào)付きクラス名 (.pqt-plus1 など) を使用すると、コードは最初の要素のみを選択します。
  2. 変數(shù)のスコープ:要素ごとに獨(dú)立変數(shù)が作成されるため、コードの再利用性が低くなり、メンテナンスが困難になります。

解決策: イベント委任と DOM トラバーサル

より洗練された解決策は、イベント委任と DOM トラバーサルを使用することです。このアプローチにより、ボタンごとにイベント リスナーを追加する必要がなくなり、パフォーマンスとコードの保守性が向上します。

HTML構(gòu)造の最適化:

まず、HTML 構(gòu)造を最適化して操作しやすくする必要があります。クラス名から數(shù)値接尾辭を削除し、汎用クラス名を使用します。同時(shí)に、データ屬性を使用して増加値と減少値を保存します。また、HTML構(gòu)造內(nèi)のdivがspanタグ內(nèi)に配置できない問(wèn)題を修正しました。

 <div class="d-flex align-items-center pls-moins">
  <span class="count-number float-right">
    <button type="button" class="btn-sm left dec btn btn-outline-secondary pqt-minus" data-inc="-1"> 
      <i class="feather-minus"></i> - 
    ボタン>
    <span class="カートボタン">
      <span class="added">0</span>
    スパン>
    <button type="button" class="btn-sm right inc btn btn-outline-secondary pqt-plus" data-inc="1"> 
      <i class="feather-plus"></i>   
    ボタン>
  スパン>
</button></span></button></span>
</div>

<div class="d-flex align-items-center pls-moins">
  <span class="count-number float-right">
    <button type="button" class="btn-sm left dec btn btn-outline-secondary pqt-minus" data-inc="-1"> 
      <i class="feather-minus"></i> - 
    ボタン>
    <span class="カートボタン">
      <span class="added">0</span>
    スパン>
    <button type="button" class="btn-sm right inc btn btn-outline-secondary pqt-plus" data-inc="1"> 
      <i class="feather-plus"></i>   
    ボタン>
  スパン>
</button></span></button></span>
</div>

<div class="d-flex align-items-center pls-moins">
  <span class="count-number float-right">
    <button type="button" class="btn-sm left dec btn btn-outline-secondary pqt-minus" data-inc="-1"> 
      <i class="feather-minus"></i> - 
    ボタン>
    <span class="カートボタン">
      <span class="added">0</span>
    スパン>
    <button type="button" class="btn-sm right inc btn btn-outline-secondary pqt-plus" data-inc="1"> 
      <i class="feather-plus"></i>   
    ボタン>
  スパン>
</button></span></button></span>
</div>

<div class="d-flex align-items-center pls-moins">
  <span class="count-number float-right">
    <button type="button" class="btn-sm left dec btn btn-outline-secondary pqt-minus" data-inc="-1"> 
      <i class="feather-minus"></i> - 
    ボタン>
    <span class="カートボタン">
      <span class="added">0</span>
    スパン>
    <button type="button" class="btn-sm right inc btn btn-outline-secondary pqt-plus" data-inc="1"> 
      <i class="feather-plus"></i>   
    ボタン>
  スパン>
</button></span></button></span>
</div>

JavaScript コード:

 document.querySelectorAll(".btn-sm").forEach(btn => {
  btn.addEventListener('クリック', e => {
    let total = e.target.closest('.pls-moins').querySelector('.added');
    total.textContent = Math.max(0, parseInt(total.textContent, 10) parseInt(e.currentTarget.dataset.inc, 10));
  });
});

コードの説明:

  1. document.querySelectorAll(".btn-sm").forEach(btn => { ... }); : クラス名 .btn-sm を持つすべてのボタンを選択し、各ボタンにイベント リスナーを追加します。
  2. e.target.closest('.pls-moins') : e.target は、イベントをトリガーした要素 (つまり、クリックされたボタン) です。 Closest('.pls-moins') は、クラス .pls-moins を持つ最も近い祖先要素まで検索します。
  3. .querySelector('.added') : 見(jiàn)つかった .pls-moins 要素の中から、數(shù)量を表示するクラス名 .added の要素を探します。
  4. parseInt(total.textContent, 10) : テキスト コンテンツの量を整數(shù)に変換します。 10 は 10 進(jìn)數(shù)を表します。
  5. parseInt(e.currentTarget.dataset.inc, 10) : クリックされたボタンの data-inc 屬性の値を取得し、それを整數(shù)に変換します。 e.currentTarget は、イベント リスナーがバインドされている要素 (ボタンなど) を指します。
  6. Math.max(0, ...) : 數(shù)量が 0 未満にならないようにしてください。

要約する

イベント委任と DOM トラバーサルを使用すると、複數(shù)の要素を処理するための、より簡(jiǎn)潔で保守しやすい JavaScript コードを作成できます。このアプローチにより、コードの効率が向上するだけでなく、拡張や変更も容易になります。このソリューションを?qū)g裝するには、有効な HTML 構(gòu)造を記述することが重要であることに注意してください。番號(hào)付きのクラス名の使用を避け、一般的なクラス名とデータ屬性を使用して関連情報(bào)を格納します。最後に、HTML 構(gòu)造が有効であることを確認(rèn)してください。

以上が最初の要素にのみ有効な JavaScript ショッピング カート數(shù)量増減ボタンの解決策の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫(xiě)真から衣服を削除するオンライン AI ツール。

Stock Market GPT

Stock Market GPT

AIを活用した投資調(diào)査により賢明な意思決定を?qū)g現(xiàn)

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

CSSのヒント:親要素に影響を與えることなく、特定のテキストコンテンツを正確に非表示にする CSSのヒント:親要素に影響を與えることなく、特定のテキストコンテンツを正確に非表示にする Sep 16, 2025 pm 10:54 PM

このチュートリアルは、CSSを使用してHTMLページの特定のテキストコンテンツを正確に非表示にする方法を詳しく説明し、不適切なセレクターのために親要素全體が非表示になっているという問(wèn)題を回避します。ターゲットテキストのラッピング要素に排他的なCSSクラスを追加し、ディスプレイを使用して以下を使用します。屬性、開(kāi)発者はページ要素の洗練された制御を?qū)g現(xiàn)し、必要な部品のみが隠されていることを確認(rèn)し、それによりページレイアウトとユーザーエクスペリエンスを最適化します。

クロスドメインのiframesを含む親要素を含むムーズダウンイベントをキャプチャ:原則と制限 クロスドメインのiframesを含む親要素を含むムーズダウンイベントをキャプチャ:原則と制限 Sep 20, 2025 pm 11:00 PM

この記事では、クロスドメインのiframesを含む親divでムースタウンイベントをキャプチャするという課題について説明します。中心的な問(wèn)題は、ブラウザのセキュリティポリシー(同じオリジンポリシー)が、ドメインクロスIFRAMEコンテンツでの直接DOMイベントリスニングを防ぐことです。このタイプのイベントキャプチャは、IFRAMEソースドメイン名が制御され、CORSが構(gòu)成されていない限り、実現(xiàn)できません。この記事では、これらのセキュリティメカニズムを詳細(xì)に説明し、イベントインタラクションに関する制限を説明し、可能な代替案を提供します。

ブートストラップフレックスボックスレイアウトに要素の垂直スタッキングを?qū)g裝する:側(cè)面からレイヤー ブートストラップフレックスボックスレイアウトに要素の垂直スタッキングを?qū)g裝する:側(cè)面からレイヤー Sep 21, 2025 pm 10:42 PM

WebページレイアウトにBootstrapを使用する場(chǎng)合、開(kāi)発者は、特に親コンテナがF(xiàn)lexBoxレイアウトを適用する場(chǎng)合、デフォルトで垂直に積み重ねられたものではなく、並べ替えられる要素の問(wèn)題に遭遇することがよくあります。この記事では、この共通のレイアウトチャレンジを詳細(xì)に調(diào)べて解決策を提供します。BootstrapのFlex-Column Toolクラスを使用して、Flex-Direction屬性を列に調(diào)整して、フォームなどのH1タグとコンテンツブロックの正しい垂直方向の配置を?qū)g現(xiàn)し、ページ構(gòu)造が期待を満たすことを保証します。

HTMLの畫(huà)像をテキストラップする方法は? HTMLの畫(huà)像をテキストラップする方法は? Sep 21, 2025 am 04:02 AM

USECSSFLOATPROPERTYTOWRAPTEXTARONDANIMAGE:floatleftortextontontheright、floatrightextontontheleft、addmarginforspacing、およびclearfloatstopreventlayoutissues。

Lang屬性をHTMLに設(shè)定する方法 Lang屬性をHTMLに設(shè)定する方法 Sep 21, 2025 am 02:34 AM

setthelangattributionthehtmltagtospecifypagelanangage、たとえば、たとえば、forenglish;

JavaScript外部関數(shù)コール難易度分析:スクリプトの場(chǎng)所と命名仕様 JavaScript外部関數(shù)コール難易度分析:スクリプトの場(chǎng)所と命名仕様 Sep 20, 2025 pm 10:09 PM

この記事では、HTMLで外部JavaScript関數(shù)を呼び出す際の2つの一般的な問(wèn)題を調(diào)査します。スクリプトの読み込み時(shí)間が不適切になり、DOM要素が準(zhǔn)備ができていません。また、関數(shù)の命名は、ブラウザの組み込みイベントまたはキーワードと競(jìng)合する場(chǎng)合があります。この記事では、スクリプト參照位置の調(diào)整や、JavaScriptコードが正しく実行されることを確認(rèn)するための優(yōu)れた関數(shù)の命名仕様に従って、詳細(xì)なソリューションを提供します。

HTMLのホバーにツールチップを追加する方法は? HTMLのホバーにツールチップを追加する方法は? Sep 18, 2025 am 01:16 AM

UsethetitLeattributeForsimpletOultipsOrcsSorcustom-styledones.1.addtitle = "text" to nayelementfordefaultTooltips.2.forStyledTooltips、wraptheelementinAcontainer、use.tooltipand.tooltiptextextextexcscstioning、pseudo-spositing、andsoditioning、andvisctioning

HTMLのメールアドレスへのハイパーリンクを作成する方法は? HTMLのメールアドレスへのハイパーリンクを作成する方法は? Sep 16, 2025 am 02:24 AM

usemailto:inhreftocreateemaillinks.startwithforbasiclinks、add?subject = and&body = forpre-fillcontent、およびincludemultipreaddresseSorcc =、bcc = foradvencedoptions。

See all articles