Element non reconnu avec les events

Eléphant du PHP | 135 Messages

30 déc. 2009, 01:21

Bonjour,

Je me suis mis à tester les évènements avec javascript mais cela ne fonctionne pas correctement et
cela viens des éléments visiblement.

Mon code javascript est dans un fichier JS qui est appellé dans le header de la page

Ma fonction qui gère Microsoft

Code : Tout sélectionner

function $(id) { return document.getElementById(id); } function addEvent(obj,event,fct) { if(obj.attachEvent) { obj.attachEvent('on' + event,fct); } else { obj.addEventListener(event,fct,true); } } function act() { alert('Hello World'); } var divElement = $('toto'); addEvent(divElement, 'click', act);
Quand je met juste document à la place de divElement cela fonctionne mais pas sans ça...
et quand je met document ça fonctionne bien sur IE et FF.


J'ai créer un div classique de ce genre qui possède une large taille que j'ai paramétré avec le css

Code : Tout sélectionner

<div id="toto">Hello World</toto>
Et j'ai testé le fais d'ajouter le addEvent dans la page HTML et la ça fonctionne !
n'y a t-il pas moyen d'appeler cette évènement directement depuis le fichier JS ?


Merci ^^
Modifié en dernier par hi-logik le 30 déc. 2009, 01:27, modifié 1 fois.
Zend PHP 5.3 certified ^^

ViPHP
ViPHP | 5462 Messages

30 déc. 2009, 01:26

tu fais bien ton attachevent apres que le html soit chargé ?

Eléphant du PHP | 135 Messages

30 déc. 2009, 01:28

Euh...Quel attachement ? je vois pas c'est quoi ?
Zend PHP 5.3 certified ^^

ViPHP
ViPHP | 5462 Messages

30 déc. 2009, 01:37

attachEvent, ta fonction addEvent, tu l'apelle bien apres ta div ?

Eléphant du PHP | 135 Messages

30 déc. 2009, 01:40

Alors au début je l'appelais avant le div directement dans le fichier JS et
maintenant je l'appel après la div et cela fonctionne !

Mais ne peut on pas le laisser dans le fichier JS et vérifier si la page est bien charger avant ?

Merci pour ton aide.
Zend PHP 5.3 certified ^^

ViPHP
ViPHP | 5462 Messages

30 déc. 2009, 01:48

ouai, tu peu gardé ton script en debut de page, par contre faut creer un fonction pour ca. c'est avec
window.onload je crois, mais faut faire un test pour moz ou ie, je te retourve ca

ViPHP
ViPHP | 5462 Messages

30 déc. 2009, 01:53

Code : Tout sélectionner

if (window.addEventListener){ window.addEventListener("load", addOnLoad); }else if((window.attachEvent) window.attachEvent("onload", addOnLoad); }

Eléphant du PHP | 135 Messages

30 déc. 2009, 01:59

ok je te remercie !

par contre je le met ou ?
dans une fonction ou bien dans le fichier JS au début ?

Je sais pas pourquoi j'ai trop souvent se problème chez moi !
Je me suis basé sur ce tutoriel et quand je matte son code source y a pas de onload et le code est placé au dessus.
Mais je sais pas si ça viens de chez moi ou si c'est pour touts le monde.


http://www.siteduzero.com/tutoriel-3-13 ... ouris.html
Zend PHP 5.3 certified ^^

ViPHP
ViPHP | 5462 Messages

30 déc. 2009, 02:08

tu met ca en premier dans ton script, ensuite tu pourras faire

Code : Tout sélectionner

var addOnLoad = function(event) { var divElement = $('toto'); addEvent(divElement, 'click', act); }
et ducoup meme avec ta fonction addEvent

t'aurai pou direct faire en debut de script

Code : Tout sélectionner

addEvent(window, 'load', addOnLoad);

Eléphant du PHP | 135 Messages

30 déc. 2009, 02:16

ok Maintenant cela fonctionne !

J'ai fais comme suis :

Code : Tout sélectionner

function addEvent(obj,event,fct) { if(obj.attachEvent) { obj.attachEvent('on' + event,fct); } else { obj.addEventListener(event,fct,true); } }
ensuite les fonctions dont j'ai besoins puis

Code : Tout sélectionner

var addOnLoad = function(event) { var div = $('toto'); addEvent(div, 'click', act); };
Et à la fin de mon script JS je place ceci

Code : Tout sélectionner

addEvent(window, 'load', addOnLoad);
et c'est bon !

Ce qui veux dire que tout les évènements qu'éventuellement je voudrais qu'il soit chargé je peux les mettre dans la function :

var addOnLoad = function(event) { ici tout mes lancement }
Modifié en dernier par hi-logik le 30 déc. 2009, 02:30, modifié 3 fois.
Zend PHP 5.3 certified ^^

ViPHP
ViPHP | 5462 Messages

30 déc. 2009, 02:26

fais un alert dans le addOnLoad pour voir si ca se lance

Eléphant du PHP | 135 Messages

30 déc. 2009, 02:28

lol excuse moi j'etait un peu en décalage avec toi :D

regarde le message de dessus !

ça marche maintenant mais tu me dire si j'ai bien fais ou pas ?

D'ailleurs je vois que je peux rajouter d'autre évènement par exemple :

Code : Tout sélectionner

addEvent(window, 'load', addOnLoad); // qui reprend celle de base addEvent(window, 'load', autreAction); // et la je peux ajouter un autre évènement à chargé au cas ou
Merci pour ton aide...j'attends ton avis avant de mettre résolu.
Zend PHP 5.3 certified ^^

ViPHP
ViPHP | 5462 Messages

30 déc. 2009, 02:39

non tu met tout dans ta fonction addOnload

Eléphant du PHP | 135 Messages

30 déc. 2009, 02:41

ok merci pour l'info, Je prend note !


Good night :)
Zend PHP 5.3 certified ^^