> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aftersell.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Kurvikonets antal/tæller opdateres ikke

> Denne artikel beskriver, hvordan du retter dit kurvikons antal, når det ikke opdateres i Upcart.

<div id="overview">
  # Oversigt
</div>

Nogle temaer opdaterer ikke ikonet automatisk, og denne guide viser dig, hvordan du løser det med lidt brugerdefineret kode. Følg trinnene nedenfor for at få alt til at synkronisere korrekt.

**Her er et eksempel på, hvordan denne uoverensstemmelse ser ud:**

<img src="https://mintcdn.com/aftersell/uxKAdY-e0h16xa48/images/upcart/cart-counter-drawer-vs-theme-icon.gif?s=2b4c08af3555b89b66d7926793bc3833" alt="Upcart-drawer, der viser Cart 2, mens temaets kurvikonboble stadig viser 1" width="2560" height="1080" data-path="images/upcart/cart-counter-drawer-vs-theme-icon.gif" />

***

<div id="important-steps-before-you-start">
  # Vigtige trin, før du starter!
</div>

For at rette kurvikon-problemet skal du finde klassenavnet på dit kurvikon. Hvert tema er forskelligt, og dette trin sikrer, at koden fungerer specifikt for din butik.

<div id="1-use-chrome-developer-tools">
  ### **1. Brug Chrome Developer Tools**
</div>

Hvert tema er forskelligt, så du skal bruge Chrome Developer Tools (Inspect) til at finde klassenavnet på dit kurvikon.

* Højreklik på dit kurvikon på din butiksfacade, og vælg **Inspect** i Google Chrome.
* Find HTML-elementet for dit kurvikon (f.eks. **`<span class="cart-count-bubble">`**).
* **Brug for hjælp til Chrome Developer Tools?** Se [denne guide](https://developer.chrome.com/docs/devtools/overview/) for trinvise instruktioner.

<div id="2-reach-out-for-help-optional">
  ### **2. Bed om hjælp (valgfrit)**
</div>

Hvis du ikke kan finde din kurvikonklasse eller sidder fast, så fortvivl ikke! Du har muligheder:

* **Kontakt din temaudvikler:** De kender dit tema bedst og kan hjælpe dig med at finde den korrekte klasse.
* **Hyr en Shopify Expert:** Hvis du har brug for yderligere hjælp, har Shopify et katalog over betroede eksperter, der kan hjælpe. [Find en Shopify Expert her](https://experts.shopify.com/).

<div id="custom-code-disclaimer">
  ## 🚧 **Forbehold om brugerdefineret kode**
</div>

Eksempelkoden nedenfor er kun en skabelon — **den virker ikke, hvis du kopierer og indsætter den direkte**. Du skal erstatte pladsholder-klassenavnet (f.eks. **`.cart-count-bubble > span`**) med det specifikke klassenavn for dit kurvikon.

***

<div id="step-by-step-fix">
  # Trinvis løsning
</div>

Vi har opdelt processen i tre niveauer af løsninger, startende med den enkleste (Niveau 1). Hvert niveau bygger videre på det foregående — prøv Niveau 1 først, og gå kun videre til Niveau 2 eller 3, hvis det er nødvendigt.

<div id="step-1-add-custom-code-in-upcart">
  ## **Trin 1: Tilføj brugerdefineret kode i Upcart**
</div>

Da vi skal tilføje noget brugerdefineret HTML-kode i Upcart-editoren, gør vi først den sektion klar:

1. Gå til **Upcart Editor > Settings**, og åbn derefter fanen **Custom HTML** (bag **More settings**, hvis den ikke er plads til den på fanerækken).
2. Sæt placeringen til **Scripts (Before Load)**.
3. Indsæt din redigerede kode her (vi giver eksempler for hvert niveau nedenfor).

Sådan ser det ud:

<img src="https://mintcdn.com/aftersell/uxKAdY-e0h16xa48/images/upcart/cart-counter-custom-html-settings-location.gif?s=d70ce32a4328c99bf2d0b9d18efcd853" alt="Upcart Custom HTML-indstillinger med HTML-placeringen sat til Scripts Before Load" width="1588" height="1080" data-path="images/upcart/cart-counter-custom-html-settings-location.gif" />

***

<div id="step-2-apply-the-fix-by-level">
  # **Trin 2: Anvend løsningen efter niveau**
</div>

<div id="level-1-basic">
  ## Niveau 1 (Grundlæggende)
</div>

Når kurven indlæses, lægger dette script antallene på kurvens varelinjer sammen og skriver resultatet ind i antalselementet i dit temas kurvboble. Det passer til temaer, hvor antallet ligger i et simpelt indlejret element (for eksempel `.cart-count-bubble > span`).

**Glem ikke**

* Erstat **`.cart-count-bubble > span`** med din kurvikonklasse.
* Test det på din butiksfacade, efter du har tilføjet koden.

<img src="https://mintcdn.com/aftersell/uxKAdY-e0h16xa48/images/upcart/cart-counter-level-1-count-bubble-script.gif?s=ef698547d55d921009278b3a006e4a9d" alt="Indsættelse af Niveau 1-antalsscriptet i Upcart Custom HTML med cart-count-bubble-selektoren" width="1996" height="1080" data-path="images/upcart/cart-counter-level-1-count-bubble-script.gif" />

<div id="example-code-for-level-1">
  ## Eksempelkode til Niveau 1
</div>

```text theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
<script>  
window.upcartSubscribeCartLoaded((event) => {  
    const countEl = document.querySelector('.cart-count-bubble > span');  
    const itemCount = event.cart.items.reduce((total, item) => total + item.quantity, 0);  
    countEl.innerText = itemCount;  
});  
</script>
```

<Note>
  **Bemærkning om ældre versioner:** `window.upcartOnCartLoaded`-callbacks fungerer stadig, men er udfaset og logger advarsler i konsollen. Brug `upcartSubscribeCartLoaded` til alle nye scripts. Bemærk, at `event.cart` ikke har en `item_count`-egenskab — brug `event.cart.items.reduce((total, item) => total + item.quantity, 0)` til at beregne det samlede vareantal.
</Note>

***

<div id="level-2-moderate">
  ## Niveau 2 (Moderat)
</div>

Hvis Niveau 1 ikke virkede, erstatter dit tema muligvis hele kurvikonets HTML, når antallet ændres. Denne version genopbygger ikon-markuppen for tomme og ikke-tomme kurvtilstande, så antal og ikon forbliver synkroniseret.

**Glem ikke**

* Erstat **`#cart-icon-bubble-custom`** med dit temas wrapper-selektor for kurvikonet.
* Test det, efter du har gemt.

<Frame>
  <img src="https://mintcdn.com/aftersell/uxKAdY-e0h16xa48/images/upcart/cart-counter-level-2-icon-bubble-script.gif?s=7d36ca92c77564a670a1940818b7d86b" alt="Indsættelse af Niveau 2-kurvikonscriptet i Upcart Custom HTML med cart-icon-bubble-custom-selektoren" width="1876" height="1080" data-path="images/upcart/cart-counter-level-2-icon-bubble-script.gif" />
</Frame>

<div id="example-code-for-level-2">
  ### Eksempelkode til Niveau 2
</div>

```text theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
<script>  
;(() => {  
function updateCartCount(itemCount) {  
    const iconWrapperEl = document.querySelector('#cart-icon-bubble-custom');  
    if (itemCount === 0) {  
        iconWrapperEl.innerHTML = `<span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-cart-empty" viewBox="0 0 40 40"><path fill="currentColor" fill-rule="evenodd" d="M15.75 11.8h-3.16l-.77 11.6a5 5 0 0 0 4.99 5.34h7.38a5 5 0 0 0 4.99-5.33L28.4 11.8zm0 1h-2.22l-.71 10.67a4 4 0 0 0 3.99 4.27h7.38a4 4 0 0 0 4-4.27l-.72-10.67h-2.22v.63a4.75 4.75 0 1 1-9.5 0zm8.5 0h-7.5v.63a3.75 3.75 0 1 0 7.5 0z"></path></svg></span><span class="visually-hidden">Cart</span>`;  
    } else {  
        iconWrapperEl.innerHTML = `<span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-cart" viewBox="0 0 40 40"><path fill="currentColor" fill-rule="evenodd" d="M20.5 6.5a4.75 4.75 0 0 0-4.75 4.75v.56h-3.16l-.77 11.6a5 5 0 0 0 4.99 5.34h7.38a5 5 0 0 0 4.99-5.33l-.77-11.6h-3.16v-.57A4.75 4.75 0 0 0 20.5 6.5m3.75 5.31v-.56a3.75 3.75 0 1 0-7.5 0v.56zm-7.5 1h7.5v.56a3.75 3.75 0 1 1-7.5 0zm-1 0v.56a4.75 4.75 0 1 0 9.5 0v-.56h2.22l.71 10.67a4 4 0 0 1-3.99 4.27h-7.38a4 4 0 0 1-4-4.27l.72-10.67z"></path></svg></span><span class="visually-hidden">Cart</span><div class="cart-count-bubble"><span aria-hidden="true">${itemCount}</span><span class="visually-hidden">${itemCount} item</span></div>`;  
    }  
}  
  
window.upcartSubscribeCartLoaded((event) => {  
    const itemCount = event.cart.items.reduce((total, item) => total + item.quantity, 0);  
    updateCartCount(itemCount);  
});  
})();  
</script>
```

<Note>
  **Bemærkning om ældre versioner:** `window.upcartOnCartLoaded`-callbacks fungerer stadig, men er udfaset og logger advarsler i konsollen. Brug `upcartSubscribeCartLoaded` til alle nye scripts.

  Bemærk, at `event.cart` **ikke** har en `item_count`-egenskab — scriptsene ovenfor udleder totalen med `event.cart.items.reduce((total, item) => total + item.quantity, 0)` og sender den ind som `itemCount`. Ældre kopier af disse kodestykker, der interpolerer `cart.item_count`, kaster en `ReferenceError` og opdaterer aldrig ikonet uden fejlmelding.
</Note>

***

<div id="level-3-advanced">
  ## Niveau 3 (Avanceret)
</div>

Hvis dit tema bruger **separat** kurvikon-markup til desktop og mobil, skal du køre samme opdateringslogik mod to selektorer, så hver visning får den korrekte HTML og det korrekte antal.

**Glem ikke**

* Erstat **`#cart-icon-bubble-custom-desktop`** og **`#cart-icon-bubble-custom-mobile`** med dit temas klasser.
* Test grundigt på både desktop- og mobilvisninger.

<img src="https://mintcdn.com/aftersell/uxKAdY-e0h16xa48/images/upcart/cart-counter-level-3-desktop-mobile-script.gif?s=36058384ee181aa8fc630e3c7bfc8716" alt="Indsættelse af Niveau 3-scriptet i Upcart Custom HTML med separate kurvikon-selektorer til desktop og mobil" width="1996" height="1080" data-path="images/upcart/cart-counter-level-3-desktop-mobile-script.gif" />

<div id="example-code-for-level-3">
  ### Eksempelkode til Niveau 3
</div>

```text theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
<script>  
;(() => {  
function updateCartCount(itemCount) {  
    // Desktop  
    const desktopIconWrapperEl = document.querySelector('#cart-icon-bubble-custom-desktop');  
    if (itemCount === 0) {  
        desktopIconWrapperEl.innerHTML = `<span>Cart</span><span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-cart-empty" viewBox="0 0 40 40"><path fill="currentColor" fill-rule="evenodd" d="M15.75 11.8h-3.16l-.77 11.6a5 5 0 0 0 4.99 5.34h7.38a5 5 0 0 0 4.99-5.33L28.4 11.8zm0 1h-2.22l-.71 10.67a4 4 0 0 0 3.99 4.27h7.38a4 4 0 0 0 4-4.27l-.72-10.67h-2.22v.63a4.75 4.75 0 1 1-9.5 0zm8.5 0h-7.5v.63a3.75 3.75 0 1 0 7.5 0z"></path></svg></span>`;  
    } else {  
        desktopIconWrapperEl.innerHTML = `<span>Cart (${itemCount})</span><span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-cart" viewBox="0 0 40 40"><path fill="currentColor" fill-rule="evenodd" d="M20.5 6.5a4.75 4.75 0 0 0-4.75 4.75v.56h-3.16l-.77 11.6a5 5 0 0 0 4.99 5.34h7.38a5 5 0 0 0 4.99-5.33l-.77-11.6h-3.16v-.57A4.75 4.75 0 0 0 20.5 6.5m3.75 5.31v-.56a3.75 3.75 0 1 0-7.5 0v.56zm-7.5 1h7.5v.56a3.75 3.75 0 1 1-7.5 0zm-1 0v.56a4.75 4.75 0 1 0 9.5 0v-.56h2.22l.71 10.67a4 4 0 0 1-3.99 4.27h-7.38a4 4 0 0 1-4-4.27l.72-10.67z"></path></svg></span>`;  
    }  
  
    // Mobile  
    const mobileIconWrapperEl = document.querySelector('#cart-icon-bubble-custom-mobile');  
    if (itemCount === 0) {  
        mobileIconWrapperEl.innerHTML = `<span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-cart-empty" viewBox="0 0 40 40"><path fill="currentColor" fill-rule="evenodd" d="M15.75 11.8h-3.16l-.77 11.6a5 5 0 0 0 4.99 5.34h7.38a5 5 0 0 0 4.99-5.33L28.4 11.8zm0 1h-2.22l-.71 10.67a4 4 0 0 0 3.99 4.27h7.38a4 4 0 0 0 4-4.27l-.72-10.67h-2.22v.63a4.75 4.75 0 1 1-9.5 0zm8.5 0h-7.5v.63a3.75 3.75 0 1 0 7.5 0z"></path></svg></span><span class="visually-hidden">Cart</span>`;  
    } else {  
        mobileIconWrapperEl.innerHTML = `<span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-cart" viewBox="0 0 40 40"><path fill="currentColor" fill-rule="evenodd" d="M20.5 6.5a4.75 4.75 0 0 0-4.75 4.75v.56h-3.16l-.77 11.6a5 5 0 0 0 4.99 5.34h7.38a5 5 0 0 0 4.99-5.33l-.77-11.6h-3.16v-.57A4.75 4.75 0 0 0 20.5 6.5m3.75 5.31v-.56a3.75 3.75 0 1 0-7.5 0v.56zm-7.5 1h7.5v.56a3.75 3.75 0 1 1-7.5 0zm-1 0v.56a4.75 4.75 0 1 0 9.5 0v-.56h2.22l.71 10.67a4 4 0 0 1-3.99 4.27h-7.38a4 4 0 0 1-4-4.27l.72-10.67z"></path></svg></span><span class="visually-hidden">Cart</span><div class="cart-count-bubble"><span aria-hidden="true">${itemCount}</span><span class="visually-hidden">${itemCount} item</span></div>`;  
    }  
}  
  
window.upcartSubscribeCartLoaded((event) => {  
    const itemCount = event.cart.items.reduce((total, item) => total + item.quantity, 0);  
    updateCartCount(itemCount);  
});  
})();  
</script>
```

<Note>
  **Bemærkning om ældre versioner:** `window.upcartOnCartLoaded`-callbacks fungerer stadig, men er udfaset og logger advarsler i konsollen. Brug `upcartSubscribeCartLoaded` til alle nye scripts.

  Bemærk, at `event.cart` **ikke** har en `item_count`-egenskab — scriptsene ovenfor udleder totalen med `event.cart.items.reduce((total, item) => total + item.quantity, 0)` og sender den ind som `itemCount`. Ældre kopier af disse kodestykker, der interpolerer `cart.item_count`, kaster en `ReferenceError` og opdaterer aldrig ikonet uden fejlmelding.
</Note>

***

<div id="still-not-working">
  # Virker det stadig ikke?
</div>

Hvis ingen af disse niveauer løser problemet, så fortvivl ikke — du er ikke løbet tør for muligheder! Det betyder sandsynligvis, at dit tema kræver mere avanceret tilpasning.

**Her er, hvad du kan gøre som det næste:**

* Kontakt din temaudvikler for hjælp.
* Hyr en [Shopify Expert](https://www.shopify.com/partners/directory), der kan skabe en skræddersyet løsning til din butik.
