Accueil > Forum > > > > Ajouter une propriété à un élément HTML
Ajouter une propriété à un élément HTML
vendredi 24 avril 2009 à 16:23:30 |
Ajouter une propriété à un élément HTML

cramyh
|
Bonjour, Dans ma page, j'ai besoin de lier à un élément HTML un objet javascript. Pour cela, j'ai pensé lui ajouter ce dernier en tant que propriété, en faisant dans mon script: monElementHTML.nouvelObjet = monObjet Ca fonctionne correctement sur tous les navigateurs (Firefox, Safari, Opera, Chrome) mais pas sur Internet Explorer, qui, au lieu d'ajouter mon objet en tant que propriété de l'élément HTML, l'ajoute en tant qu'attribut HTML, donc sous forme de chaîne (avec appel de toString())! Auriez-vous une idée de la manière de procéder pour obtenir le bon résultat sur Internet Explorer ? Sinon toute autre solution serait la bienvenue pour pouvoir retrouver un objet javascript quelconque à partir d'un élément HTML. Merci Un exemple d'utilisation pratique de ce procédé: <p onclick="this.monObjet.reponseAuClic()"> ... </p>
|
|
vendredi 24 avril 2009 à 18:33:59 |
Re : Ajouter une propriété à un élément HTML

Bul3
|
Bonjour, lié un objet javascript à une balise ? une fonction non ( même si c'est en POO ) ? >>monElementHTML.nouvelObjet = monObjet certes... mais tu fais tel quel ? c'est quoi monElementHTML ? c'est quoi nouvelObjet ? c'est quoi monObjet ? en général, on ajoute du javascript sur un évênement lié à une balise (**) , sinon, le javascript ne sert à rien ! mais je comprend sûrement mal, je ne vois pas trop ce que tu veut faire, ni comment tu le fais, et... tu es sûr que FF et les autres ne râlent pas dans leur "console d'erreur" ? (**) exemple : <balise...> <script...> balise. onévênement=function() { traitements; }</script> Cordialement [ mon Site] [ M'écrire]  Bul
|
|
vendredi 24 avril 2009 à 18:35:53 |
Re : Ajouter une propriété à un élément HTML
|
lundi 27 avril 2009 à 12:24:43 |
Re : Ajouter une propriété à un élément HTML

cramyh
|
Bonjour,
Merci de m'avoir répondu, Bul3. Ton tableau m'a servi car je ne connaissais pas tout. J'ai donc pu vérifier à nouveau sous Opera 9.51, Safari 4 beta pour Windows, Chrome 1.0.154, IE7, IE8, et Firefox 3.0.9. A part IE7 et IE8, tous réagissent comme je le souhaite: leur console n'affiche pas de message d'erreur, et ceux qui disposent d'outils d'inspection des propriétés DOM des éléments HTML (Firefox avec Firebug, Opera, Safari) montrent bien mon objet javascript rattaché à l'élément HTML en tant que propriété DOM.
Pour que les choses soient plus claires, je vais expliquer un peu le contexte dans lequel j'utilise ce système:
Dans une page, j'ai un tableau (balise <table>) avec lequel l'utilisateur peut interagir: une interface avec des boutons permet de lui ajouter à volonté des lignes et des colonnes. De même, lorsqu'on clique quelque part dans le tableau, celui-ci réagit (mise en surbrillance, affichage de menus, de zones cachées, etc). Comme le tableau est de taille variable et se construit dynamiquement, j'ai décidé de le représenter de façon abstraite par une classe javascript Tableau, elle-même comprenant des classes internes: Ligne et Cellule. A chaque fois qu'une nouvelle ligne est créée, une instance de Ligne est créée et rattaché à mon instance de Tableau (Tableau contient un champ Array contenant des objets Ligne, et chaque objet Ligne contient un champ Array avec des objets Cellule).
Voici un aperçu simplifié de ce que cela donne:
function Tableau() { this.lignes = new Array(); // tableau de lignes (objets Ligne) this.baliseTable = $('maTable');/**/ // Elément html <table> this. ligneSelectionnee = null; // Ligne actuellement sélectionnée
this.ajouterLigne = function() { var ligne = new Ligne(this); ... this.lignes.push(ligne); ... } this.supprimerLigne = function() { ...
} // Sélectionne la ligne passée en paramètre this. selectLigne: function(ligne) { ...
} ...
// Classe représentant une ligne du tableau function Ligne(tableauParent) {
this.cellules = new Array(); // Cellules contenues dans la ligne this.ligneElt = null; // Elément html de la ligne (balise <tr>) this.tableauParent = tableauParent; // Lien vers le tableau conteneur , // de classe Tableau this.celluleSelectionnee = null; // Classe représentant une cellule d'une ligne function Cellule(ligneContenante) { ...
} // Ajoute une cellule à la ligne this.ajouterCellule = function() { ...
}
// Supprime la cellule sélectionnée this.supprimerCellule = function() { ...
}
// (Suite du constructeur de Ligne :)
/***/ this.ligneElt = Builder.node('tr', { onClick: 'this.ligne.tableauParent.selectLigne(this.ligne);' }); this.ligneElt.ligne = this; } }
/**/ $() est une fonction du framework Prototype. C'est (en gros) un substitut de document.getElementById().
/***/Builder.node() est une function tirée du framework de Scriptaculous et documentée à l'adresse suivante: http://wiki.github.com/madrobby/scriptaculous/builder Elle permet de créer des balises html de manière concise et lisible pour l'utilisateur.
La ligne en rouge est celle qui est mal interprétée par IE, mais correctement par les autres navigateurs. La ligne en bleu montre un exemple d'utilisation dans le code de la propriété ligne de la balise html <tr>.
Dans la ligne en rouge, ce que je veux finalement c'est qu'à l'objet représentant dans le DOM la ligne physique (balise <tr>) soit ajouté, en tant que propriété, l'objet ligne de classe Ligne. Comme ça, on peut le mentionner directement dans le onclick de la ligne (ligne bleue) par this.ligne.
Or, Internet Explorer, lui, n'ajoute pas ligne en tant que propriété du DOM, mais ajoute à la balise <tr> de la ligne un attribut ligne, en faisant un toString() de l'objet ligne. A l'inspection du code HTML généré, cela donne:
<tr ligne="[Object object]" onClick:'this.ligne.tableauParent.selectLigne(this.ligne);' >
Le onClick ne peut donc pas fonctionner...
--> Ma question est donc: Connaissez-vous un moyen de procéder sur Internet Explorer pour ajouter à l'objet DOM d'un élément HTML une propriété DOM supplémentaire (objet personnalisé ou n'importe quel objet prédéfini ou type primitif)? Sinon toute autre solution serait la bienvenue pour pouvoir retrouver dynamiquement un objet javascript quelconque à partir d'un élément HTML.
Merci
|
|
lundi 27 avril 2009 à 12:37:26 |
Re : Ajouter une propriété à un élément HTML

Bul3
|
Bonjour, comme il y a une foultitude de "bibliothèques de fonctions" ( Prototype, Scriptaculous... ), je passe la main. mais, justement, ces outils permettent ( il parait ) de s'affranchir des différences entre les navigateurs.... donc soit elles ont un bug ( je doute , soit ( et je pense plutôt à ça ) tu n'utilises pas comme il faut. il faudrait voir ce que fait cette fonction Builder.node pour le onclick. ( si c'est setAttribute, regarde ici )
Cordialement [ mon Site] [ M'écrire]  Bul
|
|
lundi 27 avril 2009 à 13:46:36 |
Re : Ajouter une propriété à un élément HTML

cramyh
|
Je vais essayer sans Builder.node(), pour voir. Mais je n'y crois pas, car le problème n'intervient pas ici, au moment de la construction du <tr> avec son onclick(), mais au niveau de l'affectation de l'objet javascript comme propriété DOM du <tr>, comme je l'ai expliqué dans mon précédent message.
Je te dis si j'ai du nouveau. Merci de t'intéresser à mon problème.
|
|
lundi 27 avril 2009 à 14:18:33 |
Re : Ajouter une propriété à un élément HTML

Bul3
|
t'as probablement expliqué, mais ce que je peux te dire c'est que un_élément.onclick=function() { ce qu'on veut... } ça baigne toujours et partout t'es trop sophistiqué pour moi, je suis un béotien, et me parler d'un objet javascript tel que tu en parles.... j'ai du mal !! les "bibliothèques de fonctions" que utilise fonctionnent, certes... je ne m'y intéresse pas du tout
|
|
lundi 27 avril 2009 à 14:24:28 |
Re : Ajouter une propriété à un élément HTML

cramyh
|
Bon, je viens de faire quelques essais, et effectivement le problème venait bien du onclick() passé dans Builder.node() ! En fait, c'est le fait de le passer sous forme de chaîne de caractères qui ne fonctionne pas. J'ai essayé avec succès de la façon suivante:
this.ligneElt = Builder.node('tr', { onclick: function() { this.ligne. tableauParent .selectLigne(this.ligne); } });
En plus, je l'avais mal orthographié. J'avais mis une majuscule au milieu: onClick, alors que c'est onclick.
Merci pour ton aide. Comme quoi le problème ne venait pas de là où je le croyais. Internet Exporer continue à m'afficher un attribut ligne="[Object object]", mais le code réagit normalement, comme si la propriété DOM avait bien été affectée. Comme je n'ai rien pour inspecter le DOM sous IE, je ne peux pas le voir.
Merci encore!
|
|
lundi 27 avril 2009 à 14:31:23 |
Re : Ajouter une propriété à un élément HTML

Bul3
|
>>Comme je n'ai rien pour inspecter le DOM sous IE, je ne peux pas le voir. ben.... je t'ai mis un tableau, qu'il suffit de regarder mais avec IE8, tout est dispo... directement. @+
|
|
Cette discussion est classée dans : élément, objet, ajouter, html, propriété
Répondre à ce message
Sujets en rapport avec ce message
Ajouter un élément à une listbox [ par Nerdz ]
Salut,Je connais po grand chose au javascript et j'aimerais ajouter un élément à une listbox ( select ) lorsque kk1 clique sur un bouton.
Problème [ par zzzzzz ]
YepEn fait je m'y connais rien en javascript mais peu importe...j'ai cette source: function ajouter_smiley(){ fen_smileys=open("../../Autres/smiley
la propriété arguments sur un objet [ par laurent6974 ]
bonjourexiste t il une propriété arguments pour récupérer le nom et les valeurs des arguments passer à une fonction qui crée un objetsinon comment peu
ajouter ce controle (cf photo) a une page web (html, js,..?) [ par junty94 ]
bonjour, Je voulais savoir s'il était possible d'ajouter un controle de ce type sur une page html. (en passant, comment s'appelle ce controle ?)
Editeur WYSIWYG - Ajouter du HTML à l'iframe [ par Tilix ]
Salut, J'ai pris un petit editeur wysiwyg sur internet (Source : http://www.ibilab.net/webdev/exemples/editeur-wysiwyg.htm) Et je voudrais ajouter
Nouvelle categorie [ par Jo ]
Salut,Juste une petit proposition d'ajout de categorie, car la je viens de venir sur le site, pour ajouter des sources, et la ! En voulant ajouter un
erreur script : cet objet ne gère pas cette méthode ou cette propriété [ par cazou29 ]
J'ai un menu droulant qui fonctionne correctement sur mozilla, netscape. Sur IE, il fonctionne a 80%. les menus s'affichent sur la plupart des pages c
POO , instanciation d'objet relié a un élément HTML [ par josh666 ]
Bonjour a tous !Bon je me lance plus a fond dans la programmtion POO , et j'aimerais savoir s'il y a une méthode de relié une instanciation d'objet a
Ajouter un champs a un select [ par michaelminelli1 ]
Bonjour, J'ai dans une page html un champs select : [code=html] Toto [/code] Je cherche a faire en sorte que en appuyant sur l'image un champs j
Ajouter un élément à une Drop-Down list [ par bob ]
Je ne sais pas comment ajouter un élément à une drop-down list pendant que la page est en cour.Est-ce que quelqu'un pourrait m'aider.Merci
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Forum
UTILISER UN .JSUTILISER UN .JS par zaikoe
Cliquez pour lire la suite par zaikoe
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|