-2
votes

Impossible de mettre à jour la variable globale à l'aide de JavaScript sur le bouton Cliquez

Je dois mettre à jour le prix variable globale. Je crois que cela peut avoir quelque chose à faire avec la portée. J'apprécierais que si vous pouviez être utile à cet égard.

Ceci est le script: xxx

voici le HTML où je reçois mes données de: < / p> xxx

voici le HTML où je prends mes données à: xxx


1 commentaires

Quelles sont exactement vos questions / problèmes?


3 Réponses :


0
votes

Il y a deux problèmes ici. Premièrement, ajouter () code> est d'ajouter un élément à une collection, de ne pas joindre à un gestionnaire d'événements. Pour faire ce que vous voulez utiliser Cliquez () CODE> ou ON () CODE>.

Deuxièmement, prix code> est uniquement mis à jour après em> l'événement de clic se produit, mais votre logique tente de le lire immédiatement. Pour résoudre ce problème, vous devez mettre le console.log () code> ligne dans ce gestionnaire d'événements. Essayez ceci: p>

p>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="delivery1">Click me</button>

<div id="nextday" data-price="1.99">Next day: 1.99</div>


3 commentaires

Bonjour Rori, merci pour votre réponse très appréciée. Je dois utiliser la variable de prix après avoir été modifiée par la fonction, c'est pourquoi je mettez la console.log () en dehors de la fonction.


Vous ne devriez toujours pas utiliser les globaux pour cela. Je ne peux pas vraiment proposer des alternatives sans voir ce que fait votre logique complète, bien que


Salut j'ai mis à jour mon message avec toute la logique, j'espère que cela devrait avoir un meilleur sens maintenant.



0
votes

Cela n'a rien à voir avec la portée.

Regardez votre code: P>

  1. vous obtenez un élément li>
  2. Vous dites que quand fort> vous cliquez sur l'élément Price code> doit être mis à jour (Eh bien, vous essayez em> à, vous avez fait une faute de frappe et appelée Ajouter code> au lieu de sur code>) li>
  3. Vous regardez prix code> li> ol>

    Vraisemblablement, à un moment donné plus tard, vous cliquez sur l'élément. P>

    à ce point Price code> est mis à jour. P>

    vous don ' t Regardez-le à nouveau. P>

    JavaScript ne se déplace pas dans le passé et change Price Code> Avant de le regarder la première fois. P>

    Le record de quelle que soit la valeur lorsque vous avez regardée em> qui est affichée dans la console ne changera pas. p>

    Si vous souhaitez enregistrer la valeur après avoir cliqué sur l'élément, vous devez Placez le code qui fait la journalisation de la fonction appelée lorsque vous cliquez sur l'élément. p>

    p>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <button class="delivery1">5</button>
    <span id=nextday data-price=5></span>


5 commentaires

Salut quentin, je voudrais la valeur initiale à dire 5 au lieu de 0


@ Pg1728 - Alors réglez-le à cinq en ligne. Cela rendrait le bouton inutile cependant.


Désolé, nous pourrions avoir un malentendu, j'aimerais que la sortie du code indique: Valeur initiale: 5 Cliquez sur Valeur: 5


@ Pg1728 - Alors réglez-le à cinq en ligne. Si la valeur initiale est de 5, il indiquera que la valeur initiale est 5. Vous ne pouvez toujours pas définir à JavaScript Time Vrajet de sorte que si vous cliquez sur le bouton, la valeur avant de cliquer sur le bouton est différent.


@ Pg1728 - ressemble au même problème. Dans votre question originale, vous receviez la mauvaise valeur lorsque vous CONSOLE.LOG Ed It, car vous l'avez regardé au mauvais moment. La solution consiste à examiner la valeur dans votre gestionnaire de clic. Dans votre mise à jour, vous obtenez une mauvaise valeur dans le HTML car vous mettez à jour le HTML au mauvais moment. Mettez à jour le HTML de la fonction de votre gestionnaire de clic.



-1
votes

Essayez jQuery On () Comme si je suppose que votre élément peut être généré de manière dynamique, essayez de lier le gestionnaire d'événements à l'élément de corps / xxx


1 commentaires

Downvote n'est pas à moi, mais notez que vous n'avez pas adressé à la question de l'accès à la variable globale.