Maison interface Web js tutoriel Écrivez une fonction de panier d'achat simple en JavaScript

Écrivez une fonction de panier d'achat simple en JavaScript

Feb 04, 2017 pm 01:31 PM

Il existe de nombreux codes pour la mise en œuvre d'un panier d'achat sur Internet. J'ai lu quelques points de connaissances aujourd'hui et j'ai décidé de les écrire moi-même, j'ai donc écrit un simple panier d'achat. Ensuite, j'expliquerai la mise en œuvre spécifique.

1. Utilisez html pour implémenter le contenu

2. Utilisez CSS pour modifier l'apparence

3. ) pour concevoir des effets d'animations.

La première étape consiste à concevoir la page html. J'utilise un grand div pour contenir tous les produits, puis j'utilise différents div pour encapsuler différents produits, j'utilise ul li is. implémenté. Le code d'implémentation spécifique est le suivant (les produits impliqués dans le code sont copiés avec désinvolture en ligne et n'ont aucune valeur de référence) :

<div id="goods">
  <div class="goodsItem">
   <ul class="goditem">
    <li class="godpic"><img  src="/static/imghw/default1.png"  data-src="images/1.png"  class="lazy"   alt="Écrivez une fonction de panier d'achat simple en JavaScript" ></li>
    <li class="godprice">¥25.00</li>
    <li class="godinfo">《飞鸟集》中很多诗歌是用孟加拉文创作的,这部诗集最早由郑振铎先生译介到中国。</li>
    <li class="godadd"><a href="javascript:;">加入购物车</a></li>
   </ul>
  </div>
  <div class="goodsItem">
   <ul class="goditem">
    <li class="godpic"><img  src="/static/imghw/default1.png"  data-src="images/2.png"  class="lazy"   alt="Écrivez une fonction de panier d'achat simple en JavaScript" ></li>
    <li class="godprice">¥56.00</li>
    <li class="godinfo">本书主要介绍了如何使用现有的Web 相关技术构建Android 应用程序。</li>
    <li class="godadd"><a href="javascript:;">加入购物车</a></li>
   </ul>
  </div>
  <div class="goodsItem">
   <ul class="goditem">
    <li class="godpic"><img  src="/static/imghw/default1.png"  data-src="images/3.png"  class="lazy"   alt="Écrivez une fonction de panier d'achat simple en JavaScript" ></li>
    <li class="godprice">¥37.00</li>
    <li class="godinfo">用文字打败时间。冯唐最畅销作品,杂文才是其销量最好、最受欢迎的作品。</li>
    <li class="godadd"><a href="javascript:;">加入购物车</a></li>
   </ul>
  </div>
  <div class="goodsItem">
   <ul class="goditem">
    <li class="godpic"><img  src="/static/imghw/default1.png"  data-src="images/1.png"  class="lazy"   alt="Écrivez une fonction de panier d'achat simple en JavaScript" ></li>
    <li class="godprice">¥25.00</li>
    <li class="godinfo">《飞鸟集》中很多诗歌是用孟加拉文创作的,这部诗集最早由郑振铎先生译介到中国。</li>
    <li class="godadd"><a href="javascript:;">加入购物车</a></li>
   </ul>
  </div>
  <div class="goodsItem">
   <ul class="goditem">
    <li class="godpic"><img  src="/static/imghw/default1.png"  data-src="images/2.png"  class="lazy"   alt="Écrivez une fonction de panier d'achat simple en JavaScript" ></li>
    <li class="godprice">¥56</li>
    <li class="godinfo">本书主要介绍了如何使用现有的Web 相关技术构建Android 应用程序。</li>
    <li class="godadd"><a href="javascript:;">加入购物车</a></li>
   </ul>
  </div>
  <div class="goodsItem">
   <ul class="goditem">
    <li class="godpic"><img  src="/static/imghw/default1.png"  data-src="images/3.png"  class="lazy"   alt="Écrivez une fonction de panier d'achat simple en JavaScript" ></li>
    <li class="godprice">¥37.00</li>
    <li class="godinfo">用文字打败时间。冯唐最畅销作品,杂文才是其销量最好、最受欢迎的作品。</li>
    <li class="godadd"><a href="javascript:;">加入购物车</a></li>
   </ul>
  </div>
 </div>
 
 <div id="godcar">
  <div class="dnum">0</div>
  <div class="dcar">
   <img  src="/static/imghw/default1.png"  data-src="images/car.jpg"  class="lazy"   alt="Écrivez une fonction de panier d'achat simple en JavaScript" >
  </div>
 </div>

Cela implique un point de connaissance : in

  • Ajouter au panier
  • , j'ai utilisé javascript:; Cela signifie qu'aucun saut ne sera effectué et qu'un vide sera exécuté. événement .

    Étape 2 : Concevoir l'apparence. Pour un meilleur affichage, j'ai défini la largeur, la hauteur et la bordure du div contenant chaque liste de produits. Il est à noter que afin de fixer le panier, une certaine position. , définissez sa position sur fixe, puis réglez-la sur la position souhaitée en définissant en haut et à gauche. De plus, vous devez apprendre à utiliser la marge et le remplissage avec flexibilité pour rendre l'affichage plus beau.

    Remarque : Si vous souhaitez définir la largeur et la hauteur ou d'autres attributs d'élément au niveau du bloc pour les éléments en ligne, vous devez définir display:block.

    Le code de conception spécifique est le suivant :

    * {
     padding: 0px;
     margin: 0px;
     font-family: "微软雅黑";
    }
     
    .goodsItem{
     width:280px;
     height: 400px;
     float: left;
     border: 1px solid #ccc;
     margin:5px;
    }
    #goods{
     width:910px;
    }
    .goditem{
     list-style: none;
    }
    .godpic img{
     display: block;
     width:250px;
     height: 250px;
     margin:0px auto;
    }
    .godprice,.godinfo,.godadd{
     display: block;
     width:220px;
     margin:0px auto;
     text-align: center;
    }
    .godprice{
     font-size: 20px;
     color: #f00;
    }
    .godinfo{
     text-align: center;
     font-size: 14px;
     margin: 10px 0px;
     
    }
    .godadd a{
     display: block;
     width: 150px;
     height: 36px;
     background-color: #fd6a01;
     border-radius: 10px;
     margin: 0px auto;
     text-decoration: none;
     color:#fff;
     line-height: 36px;
    }
    #godcar{
     position: fixed;
     right: 0px;
     top:40%;
     width: 72px;
     height: 64px;
    }
    #godcar .dnum{
     width:24px;
     height: 24px;
     border-radius: 12px;
     background-color: #f00;
     text-align: center;
     line-height: 24px;
     position: absolute;
     font-size: 12px;
     top:0px;
    }
    .godadd .bg {
     background-color: #808080;
    }

    Le premier * signifie définir des attributs pour tous les éléments. C'est une bonne habitude de définir la marge et le remplissage au début.

    Étape 3 : Implémenter la page statique. Ensuite, vous devez implémenter l'implémentation spécifique du panier via jq, comme l'ajout au panier, la modification du nombre de paniers, etc. J'ai passé du temps à concevoir : comment faire en sorte que l'image se déplace lentement vers le panier, puis devienne plus petite et enfin disparaisse lorsque le produit est ajouté au panier. Parmi eux, j'ai utilisé la fonction animer pour implémenter ce processus. La difficulté pour réaliser cette fonction est : comment déplacer et changer l'image.

    Ce qui suit explique comment mettre en œuvre ce processus :

    1) Tout d'abord, vous devez obtenir l'image du produit, puis copier l'image obtenue

    <🎜 ; >
    var img = $(this).parent().find(".godpic").find("img");
     var cimg = img.clone();
    2) Obtenez les valeurs en haut et à gauche de l'image du produit, ainsi que les valeurs en haut et à gauche du panier, afin que le mouvement puisse être réalisé via la fonction d'animation ; = img.offset().top;

    var imgleft = img.offset().left;
    var cartop = $("#godcar").offset().top;
    var carleft = $("#godcar").offset().left;
    3) Écrivez la fonction d'animation pour obtenir des effets spécifiques

    cimg.appendTo($("body")).css({

    "position": "absolute",//绝对定位
     "opacity": "0.7",
     "top": imgtop,
     "left": imgleft
    }).animate({
     "top": cartop,
     "left": carleft,
     "width": "40px",
     "height": "40px",
     "opacity": "0.3" //透明度
    }, 1000, function () {
     cimg.remove(); //图片消失
     $(".dnum").text(i); //购物车数量变化
    });
    Des mouvements et des changements simples sont obtenus.

    Mais ensuite j'ai pensé que cela semble incompatible avec le fait que la quantité dans le panier reviendra à 0 à chaque fois que j'actualise la page, alors je j'ai réfléchi à la façon d'éviter que la quantité dans le panier ne change lors de l'actualisation de la page. J'ai vérifié les informations et résumé trois méthodes Méthode :


    (1) Enregistrer dans la base de données

    (2 ; ) Via la méthode cookie ;
    (3) Via la méthode localStorage de h5

    Finalement j'ai décidé d'utiliser la troisième méthode car je voulais essayer la nouvelle méthode de h5; ~~ et parce que j'ai vu cette méthode, je l'ai donc essayée). Les données stockées par la méthode localStorage n'ont pas de limite de temps. Après la deuxième semaine ou l'année suivante, les données sont toujours disponibles. mon code :

    D'accord, j'ai dit tout ce qu'il fallait dire. Ci-joint tous les codes de jq Comme :

    var i = 0;
    $(function(){
     var inum = 0;
     if(localStorage.getItem("inum")!==null){
      inum = localStorage.getItem("inum");
     }
     $(".dnum").text(inum);
     
     $(".godadd").click(function(){
      if (!$(this).find("a").hasClass("bg")) {
       i++;
       $(this).find("a").addClass("bg");
       var img = $(this).parent().find(".godpic").find("img");
       var cimg = img.clone();
     
       var imgtop = img.offset().top;
       var imgleft = img.offset().left;
     
       var cartop = $("#godcar").offset().top;
       var carleft = $("#godcar").offset().left;
     
       cimg.appendTo($("body")).css({
        "position": "absolute",
        "opacity": "0.7",
        "top": imgtop,
        "left": imgleft
       }).animate({
        "top": cartop,
        "left": carleft,
        "width": "40px",
        "height": "40px",
        "opacity": "0.3"
       }, 1000, function () {
        cimg.remove();
        $(".dnum").text(i);
        localStorage.setItem("inum", i);
       });
      }
     
     });
    });
    Rendu :

    <.>

    Écrivez une fonction de panier dachat simple en JavaScriptCe qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun, et j'espère que tout le monde soutiendra le site Web PHP chinois

    Pour plus d'articles liés à l'écriture. une simple fonction de panier d'achat en JavaScript, veuillez faire attention au site Web PHP chinois !

    Déclaration de ce site Web
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

    Outils d'IA chauds

    Undress AI Tool

    Undress AI Tool

    Images de déshabillage gratuites

    Undresser.AI Undress

    Undresser.AI Undress

    Application basée sur l'IA pour créer des photos de nu réalistes

    AI Clothes Remover

    AI Clothes Remover

    Outil d'IA en ligne pour supprimer les vêtements des photos.

    Clothoff.io

    Clothoff.io

    Dissolvant de vêtements AI

    Video Face Swap

    Video Face Swap

    Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

    Article chaud

    Porce de variable PHP expliquée
    1 Il y a quelques mois By 百草
    Commentant le code en php
    1 Il y a quelques mois By 百草
    <🎜>: Grow A Garden - Guide complet des marchands itinérants
    4 Il y a quelques semaines By Jack chen
    Conseils pour écrire des commentaires PHP
    1 Il y a quelques mois By 百草

    Outils chauds

    Bloc-notes++7.3.1

    Bloc-notes++7.3.1

    Éditeur de code facile à utiliser et gratuit

    SublimeText3 version chinoise

    SublimeText3 version chinoise

    Version chinoise, très simple à utiliser

    Envoyer Studio 13.0.1

    Envoyer Studio 13.0.1

    Puissant environnement de développement intégré PHP

    Dreamweaver CS6

    Dreamweaver CS6

    Outils de développement Web visuel

    SublimeText3 version Mac

    SublimeText3 version Mac

    Logiciel d'édition de code au niveau de Dieu (SublimeText3)

    Sujets chauds

    Tutoriel PHP
    1510
    276
    Appareils et contextes avancés JavaScript Appareils et contextes avancés JavaScript Jul 24, 2025 am 12:42 AM

    La portée de JavaScript détermine la portée d'accessibilité des variables, qui sont divisées en étendue globale, fonction et au niveau du bloc; Le contexte détermine la direction de cela et dépend de la méthode d'appel de fonction. 1. Les étendues incluent la portée globale (accessible n'importe où), la portée de la fonction (valide uniquement dans la fonction) et la portée au niveau du bloc (LET et const sont valides dans {}). 2. Le contexte d'exécution contient l'objet variable, la chaîne de portée et les valeurs de cela. Cela pointe vers global ou non défini dans la fonction ordinaire, l'appel de méthode pointe vers l'objet d'appel, le constructeur pointe vers le nouvel objet, et peut également être explicitement spécifié par appel / application / liaison. 3. La fermeture fait référence aux fonctions accédant et en se souvenant des variables de portée externes. Ils sont souvent utilisés pour l'encapsulation et le cache, mais peuvent provoquer

    Comment obtenir la valeur d'un bouton radio sélectionné avec JS? Comment obtenir la valeur d'un bouton radio sélectionné avec JS? Jul 18, 2025 am 04:17 AM

    Il existe deux méthodes de base pour obtenir la valeur du bouton radio sélectionné. 1. Utilisez QuerySelector pour obtenir directement l'élément sélectionné, et utilisez l'entrée [name = "Votre nom-radio"]: Sélecteur vérifié pour obtenir l'élément sélectionné et lire son attribut de valeur. Il convient aux navigateurs modernes et a un code concis; 2. Utilisez Document.PetelementsByName pour traverser et trouver la première radio vérifiée via la boucle Nodelist et obtenir sa valeur, qui convient aux scénarios compatibles avec les anciens navigateurs ou nécessitent un contrôle manuel du processus; De plus, vous devez faire attention à l'orthographe de l'attribut de nom, à la gestion des situations non sélectionnées et à un chargement dynamique du contenu

    Maîtriser les modèles de concurrence JavaScript: les travailleurs du web contre les threads Java Maîtriser les modèles de concurrence JavaScript: les travailleurs du web contre les threads Java Jul 25, 2025 am 04:31 AM

    Il existe une différence essentielle entre les travailleurs Web de JavaScript et Javathreads dans un traitement simultané. 1. JavaScript adopte un modèle unique. WebWorkers est un fil indépendant fourni par le navigateur. Il convient pour effectuer des tâches longues qui ne bloquent pas l'interface utilisateur, mais ne peuvent pas utiliser le DOM; 2. Java prend en charge le multithreading réel à partir du niveau de la langue, créé via la classe de threads, adapté à un traitement simultanée complexe et côté serveur; 3. Les travailleurs Web utilisent PostMessage () pour communiquer avec le fil principal, qui est hautement sécurisé et isolé; Les threads Java peuvent partager la mémoire, de sorte que les problèmes de synchronisation doivent être prêts à prêter attention; 4. Les travailleurs Web sont plus adaptés à l'informatique parallèle frontale, comme le traitement d'image, et

    API de composition Vue 3 Vs API Options: une comparaison détaillée API de composition Vue 3 Vs API Options: une comparaison détaillée Jul 25, 2025 am 03:46 AM

    CompositionAPI dans Vue3 convient plus à la logique complexe et à la dérivation de type, et OptionsAPI convient aux scénarios et débutants simples; 1. OptionsAPI organise le code en fonction d'options telles que les données et les méthodes, et a une structure claire mais les composants complexes sont fragmentés; 2. CompositionAPI utilise la configuration pour concentrer la logique liée, ce qui est propice à la maintenance et à la réutilisation; 3. CompositionAPI réalise la réutilisation logique sans conflit et paramétrisable par le biais de fonctions composables, ce qui est mieux que le mixin; 4. CompositionAPI a une meilleure prise en charge de la dérivation de type dactylographiée et de type plus précise; 5. Il n'y a pas de différence significative dans le volume de performances et d'emballage des deux; 6.

    Techniques de débogage avancées pour les applications JavaScript complexes, en utilisant les principes du débogueur Java Techniques de débogage avancées pour les applications JavaScript complexes, en utilisant les principes du débogueur Java Jul 17, 2025 am 01:42 AM

    Le débogage des applications JavaScript complexes nécessite des outils d'utilisation systématiques. 1. Définissez des points d'arrêt et des points d'arrêt conditionnels pour intercepter les processus suspects, tels qu'avant l'entrée de la fonction, la boucle, le rappel asynchrone et le filtre en fonction des conditions; 2. Activer la fonction BlackBoxing pour bloquer les interférences de bibliothèque tierce; 3. Utiliser les déclarations du débogueur pour contrôler l'entrée de débogage en fonction du jugement environnemental; 4. Tracez le lien d'appel via CallStack, analysez le chemin d'exécution et l'état de la variable, localisez ainsi efficacement la cause profonde du problème.

    Exploration des règles de coercition de type en javascript Exploration des règles de coercition de type en javascript Jul 21, 2025 am 02:31 AM

    La coulée de type est le comportement de la conversion automatique d'un type de valeur en un autre type en JavaScript. Les scénarios courants incluent: 1. Lorsque vous utilisez des opérateurs, si un côté est une chaîne, l'autre côté sera également converti en une chaîne, comme '5' 5. Le résultat est "55"; 2. Dans le contexte booléen, les valeurs non cooliennes seront implicitement converties en types booléens, tels que des chaînes vides, 0, nuls, non définies, etc., qui sont considérées comme fausses; 3. Null participe aux opérations numériques et sera convertie en 0, et non défini sera converti en NAN; 4. Les problèmes causés par la conversion implicite peuvent être évitées grâce à des fonctions de conversion explicites telles que Number (), String () et Boolean (). La maîtrise de ces règles aide

    Comment formater une date dans JS? Comment formater une date dans JS? Jul 20, 2025 am 12:10 AM

    Les dates de format dans JavaScript peuvent être implémentées via des méthodes natives ou des bibliothèques tierces. 1. Utilisez des coutures d'objets à date native: Obtenez la partie de date via Gettillyar, Getmonth, GetDate et d'autres méthodes, et les épisser manuellement dans des formats Yyyy-MM et d'autres, qui conviennent aux besoins légers et ne reposent pas sur des bibliothèques tierces; 2. Utilisez la méthode TolocaleDateString: vous pouvez sortir tel que le format mm / dd / yyyy en fonction des habitudes locales, en charge multilingue, mais le format peut être incohérent en raison de différents environnements; 3. Utilisez des bibliothèques tierces telles que Day.js ou Date-FNS: Fournit une syntaxe concise et des fonctions riches, adaptées aux opérations fréquentes ou lorsque l'extensibilité est requise, comme DayJS ()

    Construire un outil CLI avec Node.js Construire un outil CLI avec Node.js Jul 24, 2025 am 03:39 AM

    Initialiser le projet et créer package.json; 2. Créez un script d'entrée index.js avec shebang; 3. Registre des commandes via des champs bin dans package.json; 4. Utilisez des Yargs et d'autres bibliothèques pour analyser les paramètres de ligne de commande; 5. Utilisez le test local NPMLink; 6. Ajouter l'aide, la version et les options pour améliorer l'expérience; 7. Publier éventuellement via NPMPublish; 8. Affectuer éventuellement l'achèvement automatique avec Yargs; Enfin, créez des outils CLI pratiques grâce à une structure raisonnable et à une conception de l'expérience utilisateur, effectuer des tâches d'automatisation ou distribuer des widgets et se terminer par des phrases complètes.

    See all articles