LocalStone
Messages postés514Date d'inscriptionmercredi 19 mars 2003StatutMembreDernière intervention 1 mars 2009
-
3 août 2005 à 20:07
LocalStone
Messages postés514Date d'inscriptionmercredi 19 mars 2003StatutMembreDernière intervention 1 mars 2009
-
5 août 2005 à 11:25
Alors voilà ... J'ai une question assez pointue que je n'arrive pas à
résoudre tout seul et c'est pourquoi je demande votre aide ... Comment
je peux faire pour ajouter une méthode à un élément HTML. Par exemple :
<script>
Object.prototype.Test= function ()
{
alert('Test ! ');
}
</script>
Et du coup si je fais par exemple :
document.getElementById('n_importe_quoi').Test();, bah j'ai une boite
de dialogue qui apparait ...
Je sais pas du tout si c'est la bonne voie, mais je pense que l'on peut comprendre ma demande à travers cet exemple.
J'avoue que ça m'aiderait beaucoup de trouver ... Snif, alors aidez-moi !
GhislainLavoie
Messages postés289Date d'inscriptionvendredi 11 mars 2005StatutMembreDernière intervention 3 avril 20083 5 août 2005 à 03:18
Salut!
Je ne crois pas qu'il sot possible d'ajouter une mehode a un objet html sans avoir préalablement ajouter cette methode.
Le prototypage ne fontionne que pour les éléments js qui sont créer avec des nouveaux constructeurs [new QQC(), QQC étant une fonction] ou les objets déjà définit dans js soit : les Array, Boolean, Date, Function, Number, Object et String.
Faire une boucle pour tous les éléments comme propose Bul me semble la méthode la plus appropriée. Et si tu créer des éeélments dynamiquement, il faudra appliquer les méthodes qu'il faut.
Pour réussir a exécuter le prototype Test() de ton exemple, il faudrait par exemple l'appliquer au niveau d'un objet pour lequel il est possible de l'appliquer.
LocalStone
Messages postés514Date d'inscriptionmercredi 19 mars 2003StatutMembreDernière intervention 1 mars 2009 4 août 2005 à 13:46
Salut Bultez, merci de ton aide.
Ta methode pour ajouter une methode (étrange, ça ...) marche très bien.
Mais elle fonctionne que avec l'élément que j'ai défini. En fait, moi
je voudrais que ça marche pour tous les éléments de la page sans que
j'ai à le faire un par un. En fait, voilà un exemple concret :
Je pense que tu saisis le but de la fonction. Mais le truc, c'est que
j'aimerais qu'elle fonctionne pour n'importe quel élément HTML. Donc si
tu as une idée ...
cs_bultez
Messages postés13616Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 4 août 2005 à 14:58
un ch'tit exemple ou on passe l'objet
où appliquer en paramètre
<script type="text/javascript">
function mem(obj,att1,att2)
{ obj.setAttribute(att1,att2); }
function appel(btn)
{ alert ("après appui sur "+btn+"\r\nclick sur le texte"); }
</script>
</HEAD>
<form name="frm">
Modif size ajout Onclick </form>
normalement tu es assez fort pour appliquer ça à
tous les éléments d'un contenant ( body, form .. )
mais si besoin de plus ....
Cordialement. Bul. ~Site~~[mailto:marcelBultez@tiscali.fr Mail]~
Vous n’avez pas trouvé la réponse que vous recherchez ?
LocalStone
Messages postés514Date d'inscriptionmercredi 19 mars 2003StatutMembreDernière intervention 1 mars 2009 4 août 2005 à 15:13
Oui ! Mais non ...
En fait, pour la beauté du code, je veux rajouter la méthode ApplyStyle(); que
j'ai définie avant à TOUS les éléments HTML. Bien sur que je peux faire
une fonction comme tu m'as dit, mais c'est moins ... Joli !
Par exemlpe :
<script>
Array.prototype.getLength = function()
{
return this.length;
}
</script>
Ensuite, quelque soit le tableau que je vais créer, la méthode va être applicable à toutes les instances.
<script>
test = new Array("le ciel", "les oiseaux", "ta mère");
alert(test.getLength()); // Me renveras 3.
</script>
Et bah je cherche à créer une méthode pour tous les éléments HTML (tous ce que l'on peut récuperer par getElementById(), getElementsByTagName(), etc.) ...
cs_bultez
Messages postés13616Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 4 août 2005 à 15:40
tous les elements d'un formulaire
c'est ok mais les éléments d'une page ?
je ne sais plus [ ou pas ]
for ( n=0;n<frm.elements.length;n++)
{ sûrement un switch en fonction du type
switch (frm.elements[n].type) {
case "text":
appliquer setattribute à frm.elements[n];
break;
case ...
default:
break; } }
LocalStone
Messages postés514Date d'inscriptionmercredi 19 mars 2003StatutMembreDernière intervention 1 mars 2009 4 août 2005 à 16:40
J'avais pas pensé à ça
... Mais je sais pas, ça fait bricolage. Mais en même temps, je crois
que c'est ce que je vais faire. Le problème, c'est que si je crée un
éélment avec createElement(); après que la boucle ait été lancée, alors la methode ne sera pas présente pour ce dernier. Donc en fait, non, ça va pas ...
Mais je suis sur qu'il doit y avoir un truc avec prototype ou quelque chose comme ça ... Mais j'ai (un peu) cherché sur MSDN et j'ai rien trouvé.
Merci de ton aide ! Parce que t'es le seul à avoir tenter des réponses, jusque là !