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 :

[DOM] Ajouter une méthode à un element HTML


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Points : 56
    Points
    56
    Par défaut [DOM] Ajouter une méthode à un element HTML
    Bonjour,
    Après des heures de tests et de recherche je me résigne à poster
    Tout est presque dit dans le titre : je souhaiterais ajouter une méthode à un élément HTML, par exemple (stupide):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <a id="un_a" href="toto.html">toto</a>
     
    <script type="text/javascript">
      var a=document.getElementById('un_a');
      ***********
      ajout d'une méthode à a : getSrc() qui retournerait this.src
      ***********
      alert(a.getSrc());
    </script>
    Merci de votre aide.
    PS :
    si il est possible en plus d'appliquer une méthode à un type de balise, bien qu'il me semble que non, je suis preneur!

  2. #2
    Membre habitué Avatar de gKsam
    Profil pro
    Inscrit en
    Août 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 166
    Points : 153
    Points
    153
    Par défaut On peu le faire
    regarde la propriété prototype qui permet d'ajouter méthodes et propriétés à profusion.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Points : 56
    Points
    56
    Par défaut
    j'ai déjà bcp regardé, mais sans succès!
    je n'ai pas réussi à appliquer ça à un élément, seulement à des classes

  4. #4
    Membre habitué Avatar de gKsam
    Profil pro
    Inscrit en
    Août 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 166
    Points : 153
    Points
    153
    Par défaut
    et comme ça :

    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
    <a id="un_a" href="toto.html">toto</a>
     
    <script type="text/javascript">
     
    	function getSrc() {
     
       		//le code de ta méthode
    	}	
     
     	var a=document.getElementById('un_a');
     
     	//ajout d'une méthode à a : getSrc() qui retournerait this.src
     	a.getSrc = getSrc
     
      	alert(a.getSrc());
    </script>

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Points : 56
    Points
    56
    Par défaut
    j'aurais bien aimé, mais j'avais déjà essayé

    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
     
    <a id="un_a" href="toto.html" onclick="essai(); return false;">toto</a>
     
    <script type="text/javascript">
     
    	function getSrc() {
     			return this.href;
       		//le code de ta méthode
    	}	
     
     	var a=document.getElementById('un_a');
     
     	//ajout d'une méthode à a : getSrc() qui retournerait this.src
     	a.getSrc = getSrc
    	function essai()
    	{ 
    	 	var a=document.getElementById('un_a');
      		alert(a.getSrc());
    	}
    </script>
    ah bah non, en fait ça marche, je comprends plus lol

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Points : 56
    Points
    56
    Par défaut
    mais pourquoi ceci ne fonctionne pas alors? ai-je fait une erreur??
    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
     
    <script type="text/javascript">
    	function getNN() {
    			alert(this.nodeName);
     			return this.nodeName;
    	}	
     
    	window.onload = function(){
    		setPro(document.body);
    	}
    	var ELTS=""
    	function setPro (elt)
    	{
    		ELTS+=" "+elt.nodeName;
    		if(elt.nodeName != 'body')		elt.getNN=getNN;
    		var fils=elt.childNodes;
    		for(var i=0; i<fils.length; i++)
    		  if(fils[i].nodeType == 1) setPro(fils[i]);
    		return;
    	}
    </script>
     
    <a id="totooo" href="javascript:this.getNN();">test</a><br />
    en controlant ELTS, tous les éléments de la page ont été affectés, mais ça ne fonctionne pas :s

    PS: j'ai trouvé, tout mon problème venait du this qui est indéfini je ne sais pas trop pourquoi, mais tant pis, c'est bon

  7. #7
    Membre habitué Avatar de gKsam
    Profil pro
    Inscrit en
    Août 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 166
    Points : 153
    Points
    153
    Par défaut Tu n'en n'es pas loin...
    En fait, j'ai déjà réalisé ça. Je suis en train de le fignoler. Juste pour te dire que tu n'en es pas loin.

    J'ai un peu de mal avec les écritures simplifiées et les méthodes qui ne veulent pas dire grand chose

    Mais bon chacun ça méthode.

    Moi, c'est méthodes et propriétés en français. comme ça pas de confusion. Pour une fois que ça sert d'écrire en français dans le code. Du coups, imagine avec une fonction creerElement(typeElement) ce que l'on peut faire.

    l'anglais est une langue de documentation

    Enfin, fait attention aussi #text. Ils m'avait causés quelques soucis. Tu peux aussi profiter de tout ça pour, avec un switch sur le nodeName, ajouter des méthodes et propriétés en fonction du type d'élément.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Points : 56
    Points
    56
    Par défaut
    Alors sais tu sur quoi pointe le "this" dans un href? ya pas de nodeType
    Et c'est bien mon objectif de faire une fonction creerElement auquel on ajoute directement les bonnes proprietes.

    Et je viens de penser qu'il faut aussi faire une fonction setInnerHTML sinon ça va déconner

    Le seul pb du français c'est que c'est trop long c'est pr ça que normalement qd je code, je mixe, c'est un peu barbare mais c plus court

  9. #9
    Membre habitué Avatar de gKsam
    Profil pro
    Inscrit en
    Août 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 166
    Points : 153
    Points
    153
    Par défaut Fait attention
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <a href="#" onclick="javascript:alert(this.nodeName);">test</a>
    <a href="javascript:alert(this);">test</a>
    dans le href c'est l'objet window et dans le onclick c'est un objet anchor (lien) pour firefox mais pour ie c'est dans le href un objet (comme partout dans ie) et un lien dans le onclick.

    Je n'utilise pour l'instant aucun innerHTML. Balade toi, dans le DOM, plutôt avec appendChild, hasChild, insertRow...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajouter une fonction aux elements html
    Par the-destroyer dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 30/06/2011, 08h53
  2. Réponses: 4
    Dernier message: 30/05/2007, 14h35
  3. [DOM] Ajouter une ligne à un tableau
    Par Arnard dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/04/2007, 09h59
  4. "ajouter une méthode dans une méthode"
    Par Zorgloub dans le forum Langage
    Réponses: 1
    Dernier message: 09/04/2006, 12h53
  5. comment ajouter une image dans mon HTML??
    Par Mickey.jet dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/03/2006, 15h12

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