Comment insérer un gestionnaire onclick dans une balise <a> ?

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Comment insérer un gestionnaire onclick dans une balise <a> ?


    Bonjour, je travaille avec Joomla 3.8 en local et dans le template Protostar, sur une ligne <a href="/joomla_3.8.5-bts-sn/index.php/accueil">Accueil</a>, j'ai besoin d'insérer un onclick=chgbg() pour modifier la couleur de fond d'un titre en même temps. Comment peut-on faire cela ? Merci.

  • #2
    Bonjour

    Intéresse-toi à jquery et son évènement onclick() qui fait exactement cela.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
    Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

    Commentaire


    • #3
      Bonjour cavo789 et merci pour cette réponse,
      j'ai extrait "jQuery: le guide complet" de la bibliothèque de la boîte pour ma soirée.
      En fait, c'est où placer cet évènement click dans le html de mon site qui me pose problème pour l'instant. Une fois que j'aurai validé ça, j'attaquerai avec le code à placer derrière.

      Merci.

      Commentaire


      • #4
        On parle bien de joomla n'est-ce pas ? Tu peux utiliser l'excellent UP de lomart, voir https://up.lomart.fr/demo/action-addscript
        Christophe (cavo789)
        Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
        Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

        Commentaire


        • #5
          Je relis ton message et tu parles de ton template : vois si tu as la possibilité d'ajouter ton code dans un fichier nommé custom.js

          Le plugin de Loïc est adapté si tu souhaites faire cela dans un article ou un module mais dans ton cas, custom.js sera le plus adapté
          Christophe (cavo789)
          Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
          Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

          Commentaire


          • #6
            bonjour,
            pas de custom.js mais j'ai un fichier template.js dans lequel j'ai commencé à écrire:
            Code:
            (function($)
            {
                $(document).ready(function()
                {
                    var elm = $('div.well ul li');
                    elm[0].onclick = set_bgndSni;  //installation du gestionnaire de click
            et ma fonction set_bgndSni qui doit changer la couleur de fond d'un élément li:
            Code:
            function set_bgndSni()
            {
                //var target = $('div.nav-collapse ul li');
                var target = document.querySelector("li.item-101");
            }
            La fonction set_bgndSni est bien appelée mais j'ai l'erreur: TypeError: $ is not a function et ça me complique bien la vie.
            Est-elle mal placée dans le fichier ? J'ai tenté un passage en argument mais pas mieux...

            Merci.

            Commentaire


            • #7
              Bonjour

              À la lecture du message d'erreur, je me demande juste si : as-tu vérifié que jQuery est bien chargé par ton site ? C'est vraiment rare que cela ne soit pas le cas mais le message d'erreur retourné est cependant assez explicite.

              Pour ton code, j'aurais plutôt commencé comme ceci :

              Code:
              $(document).ready(function() {
                  $("div.well ul li").click(function() {
                      // Écrire le code pour changer le background
                  });
              });
              Ce code est plus "direct".

              (*non testé*)
              Christophe (cavo789)
              Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
              Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

              Commentaire


              • #8
                Bonjour,
                +1 avec Christophe
                Par contre, le fond est a changer sur toutes les pages ou juste sur l'accueil ?
                SI c'est sur toutes les pages, il faut le faire en CSS
                Si c'est juste sur l'accueil, il faut utiliser un sélecteur plus que div.well ul li
                ou utiliser le code dans un module publié uniquement sur cette page
                ou utiliser UP dans l'article accueil
                ou je n'ai vraiment rien compris
                UP, le plugin universel à découvrir sur https//up.lomart.fr
                bgMax
                , AdminOrder, MetaData, Zoom, ArtPlug, Custom, Memo, Filter, ... sur http://lomart.fr/extensions

                Commentaire


                • #9
                  bonjour,
                  pour info:
                  sous protostar, il est possible de créer un fichier custom.js pour les scripts et fonctions javascript personnalisés.
                  Mais dans ton cas et vu la fonction, je collerais directement la fonction dans une balise script située entre les balises head du fichier index.php du template.
                  ton lien :
                  <a href="/joomla_3.8.5-bts-sn/index.php/accueil" onclick="chbg();">Accueil</a>

                  une question cependant : est ce un lien de menu que tu cherches à modifier ?
                  Si c est le cas, la procédure est autre.
                  Dernière édition par lefabdu51 à 21/07/2018, 16h27

                  Commentaire


                  • #10
                    Bonjour et merci pour vos réponses.
                    je travaille en local pour l'instant et je ne peux donc pas vous présenter l'état de mon projet. De plus, je me rend compte que je n'ai pas le vocabulaire du développeur web pour m'expliquer. D'où la photo qui suit:
                    Cliquez sur l'image pour l'afficher en taille normale

Nom : coipeEcran.jpg 
Affichages : 38 
Taille : 111,3 Ko 
ID : 1985034
























                    BTS SN, BTS SN option Informatique et Réseaux, ... sont des liens dans des balises <li> qui permettent d'accéder aux pages d'accueil correspondantes. Leur couleur de fond passe en bleu lorsqu'elles sont actives.
                    Quand je clique sur Accueil ou Année 1, etc... de chaque section dans le menu de droite, le <div> sous la photo affiche les infos nécessaires et j'aimerais que la balise <li> qui correspond garde sa couleur de fond bleu.
                    Pour l'instant, c'est tout ce que je veux faire du point de vue des fonctionnalités.

                    cavo789: merci pour l'exemple. Effectivement, jQuery n'est pas chargé.
                    Code:
                    if(!$)
                        alert("not $");
                    Dans ma fonction set_bgndSnir(), le pop-up alert s'ouvre.
                    En attendant vos commentaires, je continue mes recherches.

                    Commentaire


                    • #11
                      Bonjour.

                      Normalement un lien de menu actif (en cours) prend une classe "active", il devrait suffire de formater cette classe (en ciblant au besoin) pour lui donner sa couleur (ou autre).
                      Cordialement.
                      __
                      Eddy !!!
                      Tutoriels BreezingForms en Français : https://www.breezingforms.eddy-vh.com/

                      Commentaire


                      • #12
                        Bonjour Eddy,
                        je viens de voir que le lien BTS SN non activé, la balise <li> porte les éléments suivants:
                        Code:
                        <li class="item-101 default"><a href="/joomla_3.8.5-bts-sn/index.php">BTS SN</a></li>
                        alors que quand je clique dessus et qu'il est actif, l'élément <li> devient:
                        Code:
                        <li class="item-101 default current active"><a href="/joomla_3.8.5-bts-sn/index.php">BTS SN</a></li>
                        donc la classe change. Est-ce qu'il y a moyen de substituer une classe par une autre quand je vais cliquer sur mon lien Accueil par exemple?
                        J'ai tendance à me répondre que oui puisque BTS SN étant actif avec un fond bleu, un clic sur BTS SN option Informatique et Réseaux fait passer son fond en bleu et change en blanc celui de BTS SN ceci apparemment par un changement de classe.
                        C'est pas simple mais je persévère.

                        Commentaire


                        • #13
                          La classe "avtive" est normalement activée pour tout lien de menu lorsqu'il est actif.

                          Il ne devrait rester qu'à formater cette classe dans ta cas, voire dans un custom.css pour garder les modif même après une mise à jour du template.
                          Cordialement.
                          __
                          Eddy !!!
                          Tutoriels BreezingForms en Français : https://www.breezingforms.eddy-vh.com/

                          Commentaire

                          Annonce

                          Réduire
                          Aucune annonce pour le moment.

                          Partenaire de l'association

                          Réduire

                          Hébergeur Web PlanetHoster
                          Travaille ...
                          X