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 des fonctions


Sujet :

JavaScript

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Points : 239
    Points
    239
    Par défaut [DOM] ajouter des fonctions
    Bonjour à tous,

    Est-il possible de faire la chose suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <html>
        <head>
            <title>mon titre</title>
        </head>
        <body>
            <div style="height:200px; width:300px; background-color: blue;" id="myDiv"></div>
        </body>
        <script>
            // ...
            myDiv = getElementById('myDiv');
            myDiv.maPropriete = true;
            // ...
        </script>
    </html>
    Ceci n'est qu'un exemple. Mais peut-on faire en sorte de compléter le fonctionnement d'un objet existant. Evidemment, lorsqu'il s'agit d'un objet que l'on a créé soit-même, c'est facile. Mais ici, je voudrais rajouter, des propriétés ou des méthodes à des objets HTML (ou autre) pour pouvoir les utiliser comme dans mon exemple...

    Je ne sais pas si je suis très clair mais j'apporterais des précisions si nécessaires !

    Merci d'avance

  2. #2
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    teste directement ton code et tu auras la réponse

  3. #3
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    Citation Envoyé par guy777 Voir le message
    Mais ici, je voudrais rajouter, des propriétés ou des méthodes à des objets HTML (ou autre) pour pouvoir les utiliser comme dans mon exemple...
    Tu peux ajouter (créer est un terme plus juste) des propriétés à ton objet. Particularité de ces propriétés : elles n'existent que pour l'objet ciblé.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <div id="test1" onclick="alert(this.maPropriete)">cliquez ici</div>
     
    <div id="test2" onclick="alert(this.maPropriete)">cliquez ici</div>
     
    <script type="text/javascript">
    var obj = document.getElementById("test1");
    obj.maPropriete = "coucou";
    </script>
    la propriété maPropriete n'existe que pour l'objet test1. Si tu cliques sur test1 tu verras "coucou". Si tu cliques sur test2, le message "undefined" apparaît.

    Attention à ne pas utiliser des propriétés naturellement définies dans l'objet HTML (id, name, style, className, class, etc.).

    Autre remarque : la syntaxe est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var obj = document.getElementById("idObjet")
    et non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var obj = getElementById("idObjet")

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Points : 239
    Points
    239
    Par défaut
    Particularité de ces propriétés : elles n'existent que pour l'objet ciblé.
    Ok. Il n'est pas possible de définir une méthode ou une propriété pour toutes les divs qui composeront ma page ? J'ai vu qu'il était possible d'ajouter des fonctions à l'objet String en utilisant le prototypage, peut-on appliquer ceci à des éléments de la page en passant par un objet hiérarchiquement plus important (alors là, je sais pas si vous allez me comprendre )...

  5. #5
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    peut-être avec une boucle :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    var tabDiv = document.getElementsByTagName("div");
    var i;
     
    for (i=0;i<tabDiv.length; i++)
    {
      tabDiv[i].maPropriete = "maValeur";
    }

  6. #6
    Membre actif
    Homme Profil pro
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Points : 239
    Points
    239
    Par défaut
    Non, ce n'était pas ce que je voulais dire.

    Les objets HTML, accessibles depuis le DOM, font-ils partie d'une collection particulière (à la manière des chaines de caractères, régies par l'objet String) ?

    Le but est de redéfinir cette collection (si elle existe) en amont pour justement éviter ce genre de boucle et pouvoir ajouter des fonctionnalités à certains éléments...

  7. #7
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Sous firefox, tu peux utiliser ca, mais c'est pas crossbrowser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Node.prototype.__defineGetter__(
          "foo",
          function () { return("fooooo"); }
    );
    qui te permet d'appeler sur chaque Node la propriété "foo".

  8. #8
    Membre actif
    Homme Profil pro
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Points : 239
    Points
    239
    Par défaut
    Oui j'y ai pensé, mais quand je vois la doc de firefox sur Javascript à ce sujet, y'a plein de fonctions non-standard, je crois que je vais éviter. Le but c'est aussi de proposer ces fonctionnalités pour l'ensemble des browsers...

    C'est bien dommage d'ailleurs, paske c'est pile-poil ce que je voudrais !

Discussions similaires

  1. Ajout des fonctions a l'étape Execution Script java
    Par Rachid24 dans le forum kettle/PDI
    Réponses: 1
    Dernier message: 16/12/2008, 12h58
  2. Réponses: 0
    Dernier message: 01/10/2008, 17h17
  3. [Carte graphique] ajouter des fonctions :3
    Par san_gohan dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 23/06/2008, 08h02
  4. Réponses: 13
    Dernier message: 06/02/2006, 10h12
  5. [VBA-E] Ajouter des fonctions dans Excel
    Par Clezio dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/03/2004, 01h18

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