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 :

href="javascript:display( this )"


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 84
    Points : 50
    Points
    50
    Par défaut href="javascript:display( this )"
    Bonjour,

    Je souhaite passez l'élément "this" a une fonction javascript.

    J'ai lu que ce n'était pas propre de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#" onClick="display(this)">
    Cependant le code suivant ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="javascript:display(this)">
    Qu'elle est la méthode la plus propre pour faire ce genre d'appel sachant que je ne souhaite pas que ma page se recharge. Je souhaiterais donc éviter ce genre de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="index.php" onClick="display(this)">
    Merci.

  2. #2
    Membre actif Avatar de nod__
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 176
    Points : 226
    Points
    226
    Par défaut
    tout dépend de ce que tu veux.

    Si dans ton <a> il n'y a pas de href (ou juste ton #) c'est crade. HTML possède un élement pour les interactions : <button>

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <button onclick="display(this)"></button>

    la suite c'est d'attacher le gestionnaire d'évènement à partir de javascript et non pas dans le html en dur.

  3. #3
    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
    utiliser une balise a pour declencher une fonction gène principalement au niveau de référencement et c'est çà éviter.
    mieux vaut comme le dit nod utiliser un bouton

    En cas de force majeure il faut tout de même inhiber le href avec un retunr false
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#" onclick="display(this);return false;">

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 84
    Points : 50
    Points
    50
    Par défaut
    En fait il s'agit d'un menu avec onglet qui me permet d'afficher/masquer des panels donc je trouve que l'utilisation de la balise <button> n'est pas vraiment adéquate.

    Y a-t-il une raison logique à ce que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="javascript:display(this)">
    renvoie un DOMElement et pas l'élément courant ?

  5. #5
    Membre actif Avatar de nod__
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 176
    Points : 226
    Points
    226
    Par défaut
    bah si ça renvoie l'élement courant, le <a> en question…

    Montre le html de ton menu, normalement si c'est des catégorie de menu tu devrait utiliser un titre pour ces catégories, et mettre le onclick sur le titre en question.

    Sinon t'as des bon scripts qui trainent pour faire bien ce genre de chose.

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 84
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par nod__ Voir le message
    bah si ça renvoie l'élement courant, le <a> en question…
    Petite erreur de ma part ca ne renvoie pas un DOMElement mais un DOMWindow.

    Citation Envoyé par nod__ Voir le message
    Montre le html de ton menu, normalement si c'est des catégorie de menu tu devrait utiliser un titre pour ces catégories, et mettre le onclick sur le titre en question.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <ul>
    	<li><a href="javascript:display(this)"><span>Pannel 1</span></a></li>
    	<li class="current"><a href="display(this)"><span>Pannel 2</span></a></li>
    	<li><a href="javascript:display(this)"><span>Pannel 3</span></a></li>
    </ul>
    Citation Envoyé par nod__ Voir le message
    Sinon t'as des bon scripts qui trainent pour faire bien ce genre de chose.
    La plupart des scripts que j'ai trouvé utilisent un href="#" onclick="display()".

    Après le code pour afficher cacher il suffit juste de modifier le style.display.

    Merci pour votre aide.

  7. #7
    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
    et le href n'est toujours pas inhiber ...

    # peut être compris par certains navigateurs comme une renvoi en haut de page (ancre par defaut) ...

  8. #8
    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
    Petite erreur de ma part ca ne renvoie pas un DOMElement mais un DOMWindow.
    Oui, c'est normal, dans la notation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#" onclick="display(this);return false;">
    L'action se fait au niveau du onclick qui est une propriété de l'objet JavaScript réprésentant la balise HTML <a>, donc this fait référence à cet objet.
    Dans la notation (que je déconseille vivement)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="javascript:display(this)">
    L'action se fait au niveau de la pseudo-url du href, il n'y a donc pas de lien explicite avec l'objet JavaScript représentant la balise, donc le contexte est global et this référence l'objet le plus global du document, c'est-à-dire window

  9. #9
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 84
    Points : 50
    Points
    50
    Par défaut
    <a href="#" onclick="display(this);return false;">
    On en revient donc à la première solution avec en plus l'inhibition (dont je n'ai pas vraiment compris l'utilité).

    Hormis le problème de retour en haut de la page (ancre par défaut) cette méthode ajoute à l'url le "#" ce que je ne trouve pas très propre non plus.

    Il existe donc que cette solution .

    Merci.

  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
    Citation Envoyé par redkan Voir le message
    Hormis le problème de retour en haut de la page (ancre par défaut) cette méthode ajoute à l'url le "#" ce que je ne trouve pas très propre non plus.
    Ben non justement, le return false sert précisément à empêcher le comportement par défaut du lien...

  11. #11
    Membre actif Avatar de nod__
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 176
    Points : 226
    Points
    226
    Par défaut
    non, tu peux mettre n'importe quel élement. Genre pourquoi tu met pas le onclick sur le li directement ? ou le span à la rigeur ?

Discussions similaires

  1. onmouseover=&quot;Menu_HoverStatic(this)&quot; object expected
    Par cyrano_de_bergerac dans le forum ASP.NET
    Réponses: 0
    Dernier message: 01/10/2010, 16h01
  2. Mise à jour href en javascript
    Par bashou dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/03/2007, 12h35
  3. Lien href et javascript
    Par Flashball dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 05/10/2006, 18h00

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