IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Raccourcir un morceau de script


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 228
    Par défaut Raccourcir un morceau de script
    Bonjour a tous.

    J'utilise le google track pour calculer ne nombre de clique sur différents liens de mon site.

    Tout fonctionne cependant j'ai un énorme rappel de toujours la même chose dans mon code et je me demandai comment le rendre plus générique.

    UN exemple serra plus parlant voila ce que j'ai dans ma page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    //Tracker Analytics maps 
                $('#exp').click(function(){
                    _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+'url1']);
                });
                $('#hip').click(function(){
                    _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+'url2']);
                });
                $('#com').click(function(){
                    _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+'url3']);
                });
     
                $('#eat').click(function(){
                    _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+'url4']);
                });
                $('#drink').click(function(){
                    _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+'url5']);
                });
                $('#dance').click(function(){
                    _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+'url6']);
                });
                $('#surprise').click(function(){
                    _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+'url7']);
                });
    Comme vous le voyez j'utilise au clique sur mes différents liens toujours la même chose avec juste l'url qui change.
    je suis sur qu'il y a quelque chose de plus propre a faire comme lancer une fonction au clique sur mes liens avec en paramètre l'url par exemple mais je ne sais pas le faire .

    Pouvez vous m'aider?

    Merci par avance

  2. #2
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var idList = ['#exp','#hip','#com','#eat','#drink','#dance','#surprise'], i = 0;
    while(i < idList.length){
        $(idList[i]).click(function(){
            _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+'url'+ ++i]);
        });
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 228
    Par défaut
    Parcque mes liens ne sont pas les un a la suite des autres, et parcque les url ne sont pas url1 url2 et.
    J'ai mit ça car je n'ai pas le droit de les diffuser.

    Bref ma question est toujours la même.

    Est-ce possible de faire un code plus court et plus propre comme la fonction avec le paramètre dont je parle dans mon message?

    Et si oui quelqu'un peut m'expliquer comment le faire?

    Merci par avance.

  4. #4
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    Citation Envoyé par Willpower Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var idList = ['#exp','#hip','#com','#eat','#drink','#dance','#surprise'], i = 0,
    urlList = ['url1','url2','url3','url4','url5','url6','url7']
    while(i < idList.length){
        $(idList[i]).click(function(){
            _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+urlList[i]);
        });
        i++;
    }
    Une boucle revient un peu au même qu'une fonction qui surchargerai tous les liens et qui trouverai l'url correspondant à son id dans un tableau. (aussi long à écrire et pratiquement la même efficacité, dépendant de l'usage. ici on fait une boucle initialisatrice(?ça existe comme mot?) pour tous les liens, tandis qu'avec la fonction, elle devrait chercher à chaque clique son lien dans un tableau.)

  5. #5
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    en plus pro(pre) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    var elemList = [
        {id:'#exp',url:'url1'},
        {id:'#hip',url:'url2'},
        {id:'#com',url:'url3'},
        {id:'#eat',url:'url4'},
        {id:'#drink',url:'url5'},
        {id:'#dance',url:'url6'},
        {id:'#surprise',url:'url7'}
    ], i = 0;
    while(i < elemList.length){
        $(elemList[i].id).click(function(){
            _gaq.push(['_trackEvent', 'outbound', 'click', '/'+langId+elemList[i].url);
        });
        i++;
    }

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 228
    Par défaut
    Merci beaucoup pour ton aide je vais essayer ceci.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 228
    Par défaut
    Excuse moi je te pose une dernière question d’après ce que j'ai compris quand je clique sur un lien ça va récupérer son le contenue de son attribut id="".

    Mais je ne vois pas ou est ce que c'est gérer.

    Est-ce le .id de elemList[i].id ?

    Si c'est ça je ne savais pas qu'on pouvais récupérer un id de cette façon.

  8. #8
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    j'ai repris ton code qui semble utiliser jQuery ou une librairie similaire:

    $('#exp')
    => renvoit (en jquery) l'objet du dom (de la page) qui a pour id la valeur 'exp'.

    $('#exp').click(function(){
    => ajoute une fonction sur l'élément qui est déclenché lors du clique.


    j'ai donc simplement créé un liste (array) regroupant tous tes liens et j'ai regroupé tes exécutions dans une simple boucle (while).

    pour chaque element de la liste
    on récupére l'élement dom correspond via son id
    on ajoute une fonction lors de l'événement clique.

Discussions similaires

  1. Raccourcir un script qui fonctionne
    Par bpascal91 dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 15/04/2011, 14h07
  2. Réponses: 6
    Dernier message: 14/04/2011, 00h03
  3. incompréhension morceau de script .ksh
    Par rouget dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 09/02/2011, 11h59
  4. morceau de script non fonctionnel
    Par rouget dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 30/11/2010, 21h55
  5. Morceau de script pas très clair
    Par rouget dans le forum Unix
    Réponses: 2
    Dernier message: 18/11/2010, 09h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo