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 :

Changer le href d'un lien par #


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 43
    Points : 18
    Points
    18
    Par défaut Changer le href d'un lien par #
    Bonjour

    Bon changer le href d'un lien je sais faire c'est élémentaire.

    Seulement là ce que je veux faire c'est rendre inopérant ce lien après le clic, en remplaçant la destination par #. Et là ça ne va plus le # ne remplace pas le lien il s'ajoute à la fin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <a href="http://monSite/link1.html" onClick="change(this);">link1</a>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function change(link){
          link.href = '#';
    }
    Alors j'ai essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    link.href = 'http:/#';
    Et là ça me remplace bien le lien mais ça me renvois à la racine du site, cela ne me le rend pas inopérant.
    Il faut que je mette quoi svp ?

  2. #2
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 12
    Points : 18
    Points
    18
    Par défaut
    Bonjour,

    Je ne comprend pas le but de mettre un lien avec un chemin et de le rendre non cliquable...
    Cela dit ça a l'air de fonctionner chez moi (avec ta fonction change) ou alors je ne comprend pas tout à fait ce que tu veux faire.
    Pourrais tu préciser ?

    ton exemple avec un jsFiddle : http://jsfiddle.net/R4YdQ/

    [EDIT] :
    Au passage tu peux aussi utiliser preventDefault si c'est juste annuler le fonctionnement par défaut du clic. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://monSite/link1.html" onClick="event.preventDefault();">link1</a>
    Le lien devient non cliquable mais utilisable avec "ouvrir dans un nouvel onglet" ou encore avec le code.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 43
    Points : 18
    Points
    18
    Par défaut
    Merci de ta réponse MisterPur

    Le but est simple: j'ai un script php qui me génère une table avec des liens cliquables, et quand on clique sur le lien on affiche en haut de la table le détail d'une fiche.

    C'était fait à la bourrin: quand on clique sur un lien, on rechargeait toute la page, table comprise, alors que l'on a besoin que de l'affichage de la fiche en plus.

    Donc j'ai voulu faire mieux avec de l'ajax; seulement j'ai un souci avec IE qui malgré tous les return false que je peux mettre persiste à me suivre le lien. Voir ce sujet http://www.developpez.net/forums/d13...-reponse-json/

    D'où l'idée de désactiver le lien. Mais ça ne marche pas. IE décide de suivre le lien quand on clique dessus, si je le change après c'est trop tard.

    Et puis c'est plus d'actualité. Je viens de passer 2h a ré-écrire mon code php de génération de la table et mon ajax. J'ai mis des liens avec # et j'ai inclus dans chaque ligne de ma table un form que je poste avec l'ajax. C'est plus lourd mais plus de souci avec IE.

    Enfin j'ai contourné mais j'aimerais bien avoir une réponse.

    J'ai un lien http://monSite/link1.html
    Avec ma fonction le lien devient http://monSite/link1.html#
    Du moins sur mon wamp!!
    Comment faire pour obtenir # tout seul?

    Cela peut avoir d'autres intérêts : par exemple un lien cliquable une seule fois.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function change(link){
          link.setAttribute("href","#");
    }
    quand tu dis il s'ajoute à la fin ...
    tu parle de ce que tu vois dans la barre d'adresse ou de ce qui est visible dans le DOM au niveau de la console ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 43
    Points : 18
    Points
    18
    Par défaut
    Merci SpaceFrog

    J'avais déjà essayé: le résultat est le même.

    Et je teste avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function change(link){
          link.setAttribute("href","#");
          alert(link.href);
    }
    Et je retrouve mon url d'origine avec # ajouté à la fin.

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    tu parles de ce que tu vois dans la barre d'adresse ou de ce qui est visible dans le DOM au niveau de la console ?
    tu ne pourras pas modifier le contenu de la barre d'adresse, si c'est ce que tu cherches à faire ...

  7. #7
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 079
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 079
    Points : 44 660
    Points
    44 660
    Par défaut
    Bonjour,
    - ce que je veux faire c'est rendre inopérant ce lien après le clic
    - D'où l'idée de désactiver le lien
    alors pourquoi mettre un lien si c'est pour ne pas s'en servir, autant mettre une balise BUTTON, SPAN ou autre encore en gérant l'événement onclick.

    Les balises A sont théoriquement faite pour rediriger vers un lien hyper texte.

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Et puis au passage le caractère "#" tout seul n'est pas précisément fait pour ne rien indiquer, il indique la page en cours. Cliquer sur un lien constitué uniquement de "#" a pour effet de recharger la page.

  9. #9
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Ce # doit venir d'un tuto. En effet, c'est une pratique courante de mettre un # à un lien quand on ne sait pas quoi lui donner à manger. Si on ne lui mettait pas du tout de href, il n'aurait plus l'apparence d'un lien (car plus concerné par le sélecteur CSS a:link).

    Bien sûr la question qui a été soulevée est : à ce moment-là, est-ce que c'est d'un lien dont on a vraiment besoin ? C'est une autre histoire.

    Pour éviter que le # se rajoute à la fin de l'URL quand on clique sur le lien, il faut annuler le clic. Le coup du return false fonctionne bien chez moi, sous Firefox 24 et sous le plus vieux IE que j'ai sous la main, IE8.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#" onclick="...; return false">clique-moi</a>

    Plus propre, utilise un gestionnaire d'évènement (un event listener).
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#" id="monlien">machin</a>

    Le JavaScript associé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    document.getElementById("monlien").addEventListener("click", function( event ){
      event.preventDefault(); // empêche le #
      // à la suite, le code pour afficher le détail de la fiche
      ...
    }, false);
    Si tu mets ce code dans le <head>, tu dois t'assurer qu'il ne s'exécute pas trop tôt, sinon le lien n'existera pas encore et ton script ne le trouvera pas. Pour ça, ajoute un gestionnaire d'évènement sur l'évènement "load" de window ou bien sur l'évènement "DOMContentLoaded" de document.

  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    un lien constitué uniquement de "#" a pour effet de recharger la page
    Euh non... pas tout à fait.
    Un lien constitué d'une ancre va créer un lien interne à la page vers l'élément référencé par l'ancre. Si l'ancre est vide (caractère # seul) alors le lien renverra en haut de la page, mais celle-ci n'est pas rechargée (pas de passage vers le serveur) elle est juste remontée.

  11. #11
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Ah oui tu fais bien de préciser, j'avais oublié le contexte effectivement. J'ai trop l'habitude mettre le '#' dans l'attribut action d'un formulaire et dans ce cas cela recharge la même page, mais pas pour un lien standard.

Discussions similaires

  1. Syntaxe pour changer la couleur d'un lien href sur onMouseOver
    Par PierreR75 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/11/2009, 21h30
  2. Sql serveur 2000 Changer null/not null et valeur par defaut
    Par mictif dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/03/2006, 07h55
  3. changer la couleur d'un lien en clicquant sur un autre
    Par ardi dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/01/2006, 13h57
  4. Onmouseover Changer la couleur d'un lien
    Par philippef dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 31/08/2005, 17h36
  5. Changer l'argument d'un lien en Javascript
    Par Oluha dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/02/2005, 17h31

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