Partage
  • Partager sur Facebook
  • Partager sur Twitter

Débutant en JQ : code se répète trop

Anonyme
    10 décembre 2018 à 20:40:44

    Salut,

    Pour mes études je dois faire un site web assez basique et le sujet était de faire un site de streaming et d'ajouter un peu de Jquery.

    Beaucoup ont fait des animations, j'ai préféré me lancer dans un système de favoris :

    - Je clic sur un <i> (fontAwesome), avec un .toggleClass ça change la classe et le coeur se rempli

    - ça récupère aussi sur quel <i> on a cliqué (car il y a 4 séries)

    - à chaque clic une valeur value passe de 1 à -1 (1 c'est cliqué, -1 c'est pas cliqué donc pas en favoris)

    Voici le code :

            var serie ="";
            var value = -1;
            // var series = [
            //     favDexter = false,
            //     favWalkingDead = false,
            //     favTheFall = false,
            //     favRickAndMorty = false
            // ]
            var favDexter = false;
            var favWalkingDead = false;
            var favTheFall = false;
            var favRickAndMorty = false;
            function toggleFavorites(){
                    value = value*(-1);
                    console.log(value);
                    serie = $(this).attr('id');
                    console.log(serie);
                     if(value == 1){
                         //$.cookie("MyTestCookie", $.param(obj), { expires: 10 });
                         if(serie == 'dexter'){
                            // series[0] = true;
                            //series.favDexter = true;
                            //favDexter = true;
                            favDexter = true;
                         }
                         if(serie == 'walkingDead'){
                             //series[1] = true;
                             favWalkingDead = true;
                         }
                         if(serie == 'theFall'){
                            // series[2] = true;
                            favTheFall = true;
                         }
                         if(serie == 'rickMorty'){
                            // series[3] = true;
                            favRickAndMorty = true;
                         }
                     }
                     else{
                        if(value == -1){
                         if(serie == 'dexter'){
                            favDexter = false;
                         }
                         if(serie == 'walkingDead'){
                             favWalkingDead = false;
                         }
                         if(serie == 'theFall'){
                            favTheFall = false;
                         }
                         if(serie == 'rickMorty'){
                            favRickAndMorty = false;
                         }
                     }
                     }
                    console.log(favDexter);
                    console.log(favWalkingDead);
                    console.log(favTheFall);
                    console.log(favRickAndMorty);
            }
            function heart(){
                 $(".fa-heart").click(function(){$(this).toggleClass("fas");});
            }
            function event(){
             $(".fa-heart").click(toggleFavorites)
            }
            $(
                function() 
                {
                    heart();
                    event();
                }
            )

    Je pense que vous avez saisi mon problème.. c'est beaucoup trop répétitif, très.. caca. En haut j'ai laissé en commentaire un array, est-ce que c'est ça qui pourrait m'aider ? 

    + quand ce sera bon, je ferais en sorte de stocker ça dans un cookie afin de garder les favoris en stock..

    Merci d'avance :)

    • Partager sur Facebook
    • Partager sur Twitter
      10 décembre 2018 à 22:21:43

      Tu pourrais éventuellement réduire un chouia avec un switch sur serie puis faire ta condition if(value>0) { ... } else { ... }

      Edit: Voir, tu peut même remplacer les condition dans le switch par des ternaires :

      switch(serie) {
         case "serie1":
            favSerie1= value>0?true:false;
         break;
         case "serie2":
            favSerie2= value>0?true:false;
         break;
      }

      NB: dans l'état je ne comprend pas trop ton code, n'y ce que tu souhaite faire exactement donc il ce peut que mes solutions ne corresponde pas a tes besoin sur le long terme.

      -
      Edité par Angelisium 10 décembre 2018 à 22:27:41

      • Partager sur Facebook
      • Partager sur Twitter

          !

      Anonyme
        10 décembre 2018 à 22:50:01

        C'est pas mal ça merci :)

        J'ai essayé de mettre mon code ici : http://jsfiddle.net/3d6hqofc/ pour que tu vois un peu mieux

        Quand on clic sur le coeur, il se rempli et la variable de la série en question passe a true.

        C'est pas encore fait, mais je compte faire "si x est true.." : afficher les séries mises en favoris dans une page ou une nouvelle div.

        • Partager sur Facebook
        • Partager sur Twitter
          11 décembre 2018 à 20:05:26

          Bonjour lolnoplolnop,

          perso, je ne pense pas que tu ai besoin de tous ce code

          Voila comment je vois le code :

          https://codepen.io/Zonecss/pen/ebNvVJ

          • Partager sur Facebook
          • Partager sur Twitter
          Découvrez les Css avec la zonecss.fr

          Débutant en JQ : code se répète trop

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown