Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Interaction objet javascript et javascript

8 réponses
Avatar
Zaza
Bonjour,

En javascript, je cr=E9e des objets, imbriqu=E9s (contenus) les uns dans
les autres. Ces objets g=E9n=E8rent du code HTML, avec des =E9l=E9ments HTM=
L
et du javascript. Pour r=E9agir =E0 des =E9v=E8nements, "onclick" par exemp=
le,
j'ai besoin d'appeler des fonctions sur tel ou tel objet, mais je ne
vois pas comment faire, je ne sais m=EAme pas si c'est possible.

Je ne suis pas s=FBr d'=EAtre clair, je le dis autrement. Prenons un des
objets ci-desssus. Cet objet g=E9n=E8re le code HTML lui correspondant,
avec par exemple des infos sous forme de texte, et un bouton.
J'aimerai, lors d'un clic sur ce bouton, appeler une m=E9thode
javascript de l'objet concern=E9.

Est-ce possible et si oui comment ?

Merci

Xavier

8 réponses

Avatar
Olivier Miakinen
Le 01/07/2008 16:42, Zaza a écrit :

En javascript, je crée des objets, imbriqués (contenus) les uns dans
les autres. Ces objets génèrent du code HTML, avec des éléments HTML
et du javascript. Pour réagir à des évènements, "onclick" par exemple,
j'ai besoin d'appeler des fonctions sur tel ou tel objet, mais je ne
vois pas comment faire, je ne sais même pas si c'est possible.

Je ne suis pas sûr d'être clair, je le dis autrement. Prenons un des
objets ci-desssus. Cet objet génère le code HTML lui correspondant,
avec par exemple des infos sous forme de texte, et un bouton.
J'aimerai, lors d'un clic sur ce bouton, appeler une méthode
javascript de l'objet concerné.

Est-ce possible et si oui comment ?



C'est certainement possible, mais tout dépend comment tu crées tes
éléments HTML. Si c'est à base de document.write ou de innerHTML, ça a
toutes les chances d'échouer. Alors qu'avec appendChild ou cloneNode ça
pourrait mieux fonctionner.

Tu as un début de code pour qu'on voie ce que tu as en tête ?
Avatar
Zaza
Salut Olivier,

Merci pour cette réponse rapide !

C'est certainement possible, mais tout dépend comment tu crées tes
éléments HTML. Si c'est à base de document.write ou de innerHTML, ça a
toutes les chances d'échouer. Alors qu'avec appendChild ou cloneNode ç a
pourrait mieux fonctionner.



Effectivement, pour le moment, je fais du document.write ou du
innerHTML. Mais avec ta remarque (appendChild ...), j'imagine que la
solution n'est pas du côté de la génération du code HTML, mais dans
une manipulation direct (en mémoire en quelque sorte) des éléments du
document HTML.

Tu as un début de code pour qu'on voie ce que tu as en tête ?



Malheureusement non, c'est à l'état de prototype d'essais et
recherche, très imbriqués dans pas mal d'autres choses.
De ton côté, aurais-tu un exemple relatif à appendChild ou cloneNode ?

Merci

Xavier
Avatar
Mickaël Wolff
Zaza a écrit :
Tu as un début de code pour qu'on voie ce que tu as en tête ?



Malheureusement non, c'est à l'état de prototype d'essais et
recherche, très imbriqués dans pas mal d'autres choses.
De ton côté, aurais-tu un exemple relatif à appendChild ou cloneNode ?



Ces derniers jours, il y a quelques codes qui utilisaient le DOM pour
manipuler le document HTML. Sinon, ton moteur de recherche préféré te
trouveras pas mal de ressources.

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
matt
Zaza a écrit :
Bonjour,

En javascript, je crée des objets, imbriqués (contenus) les uns dans
les autres. Ces objets génèrent du code HTML, avec des éléments HTML
et du javascript. Pour réagir à des évènements, "onclick" par exemple,
j'ai besoin d'appeler des fonctions sur tel ou tel objet, mais je ne
vois pas comment faire, je ne sais même pas si c'est possible.

Je ne suis pas sûr d'être clair, je le dis autrement. Prenons un des
objets ci-desssus. Cet objet génère le code HTML lui correspondant,
avec par exemple des infos sous forme de texte, et un bouton.
J'aimerai, lors d'un clic sur ce bouton, appeler une méthode
javascript de l'objet concerné.

Est-ce possible et si oui comment ?

Merci

Xavier



Bonsoir,

J'ai le même soucis. Exemple :

// Mon objet
function MyObject()
{
this.createBouton = function()
{
html = "<button type='button'
onclick='myObject.myAction'>Action</button>";
document.getElementById("myId").innerHTML = html;
}

this.myAction = function()
{
alert("ok");
}
}

var myObject = new MyObject();

Dans le onClick de mon bouton, je fais référence a l'instance de l'objet
(myObect). Mais si l'objet est recrée ailleurs avec un autre nom, alors
mes appels de fonctions sont vaines...
Une solution ???

Merci,

Matt
Avatar
Mickaël Wolff
matt a écrit :

Une solution ???



Tu peux gérer les instances via une usine (factory pattern), qui prend
pour référence l'identifiant ou le chemin du nœud visé.

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
Franç
Bonjour,

j'ai eu le même type de questionnement avec des objets d'animation. Pas
trouvé de réponse ! comment une instance d'objet peut-elle se référer à
elle-même ?

Comme ces objets manipulent des éléments HTML repérés par des id, j'ai
contourné la question en donnant à la variable javascript référençant
l'objet le même nom que l'id de l'élément HTML à manipuler, et en
transmettant ce nom à l'objet (ahhh que c'est simple !) par ex :

var ceci = new TelObjetDAnimation ("ceci", suite des paramètres)

Mais se passer d'une telle manip aurait été bien élégant !

J'en profite pour vous donner l'adresse de mon site, où vous pourrez
voir ces objets en pleine action et les télécharger si besoin avec
fichiers d'exemple :

http://francois-delegue.fr

En somme, pas vraiment de réponse à la question…

J'en profite aussi pour demander à Mickaël :

Tu peux gérer les instances via une usine (factory pattern), qui prend
pour référence l'identifiant ou le chemin du nœud visé.




… ce qu'il veut dire en langage pas trop spécialisé, puisqu'il existe
une usine modèle semble-t-il…

François





Zaza a écrit :
Bonjour,

En javascript, je crée des objets, imbriqués (contenus) les uns dans
les autres. Ces objets génèrent du code HTML, avec des éléments HTML
et du javascript. Pour réagir à des évènements, "onclick" par exemple,
j'ai besoin d'appeler des fonctions sur tel ou tel objet, mais je ne
vois pas comment faire, je ne sais même pas si c'est possible.

Je ne suis pas sûr d'être clair, je le dis autrement. Prenons un des
objets ci-desssus. Cet objet génère le code HTML lui correspondant,
avec par exemple des infos sous forme de texte, et un bouton.
J'aimerai, lors d'un clic sur ce bouton, appeler une méthode
javascript de l'objet concerné.

Est-ce possible et si oui comment ?

Merci

Xavier


Avatar
SAM
Avatar
Franç
SAM a écrit :

regardé le truc de "rotation" d'images
(un peu déçu : ça ne retourne pas l'image)



trop compliqué à faire, pour moi qui suis flemmard et non matheux,
bientôt plus la peine avec l'élément <canvas> de HTML 5…


Voici un 'truc' pas coton (881 lignes dont 30 new ...):
<http://homepage.mac.com/jorgechamorro/blob.js>
<http://homepage.mac.com/jorgechamorro/>



très impressionnant & virtuose… plus simple à réaliser en Flash j'imagine


Une présentation (en pas fr) de Douglas Crockford :
<http://www.alonswho.es/advancedJS01.mov> (45Mo)
à propos des objets et objets imbriqués ou enfants (new.object)
(si j'ai capté le début ?)

Si ça a plu :
<http://www.alonswho.es/advancedJS02.mov>
<http://www.alonswho.es/advancedJS03.mov>

et pour les "bases" :
<http://www.alonswho.es/jspl01.mov">
<http://www.alonswho.es/jspl02.mov">
<http://www.alonswho.es/jspl03.mov">
<http://www.alonswho.es/jspl04.mov">