Optimisation javascript possible ?

Signaler
Messages postés
38
Date d'inscription
samedi 16 octobre 2004
Statut
Membre
Dernière intervention
19 février 2006
-
Messages postés
544
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
20 mai 2005
-
Bonjour a tous,

Je genere du html avec javascript par programmation, et concretement ca m'amene a faire des milliers de DIV dans lequel y tjs la meme chose niveau javascript, dans chaque DIV:

onmouseover= "flipflop
(this,
0);" onmouseout ="flipflop
(this,
1);" onClick= "WebBrowser_User_Click
(this)" onDblClick ="WebBrowser_User_DblClick
(this)"

J'ai le presentiment que je boosterais le temps d'affichage (car il devient long a lire), si je pouvais factoriser tout ca.
Par exemple je pourrais mettre les mouseover, mouseout dans la balise BODY, mais auriez vous une astuce, pour que les evenements de BODY alors sache dans quelle DIV je suis pour renvoyer le this de la DIV ?.
Je vous joins la page complete ici, ca sera + clair :

http://animaux.forums.free.fr/animaux/upload/itm.zip

Grand merci a ceux qui m'aideront, et aux suggestions.

2 réponses

Messages postés
38
Date d'inscription
samedi 16 octobre 2004
Statut
Membre
Dernière intervention
19 février 2006

Houps c'est :

"Par exemple je pourrais mettre les mouseover, mouseout, onclick, ondblclick"

et non

"Par exemple je pourrais mettre les mouseover, mouseout "

y a 4 events
Messages postés
544
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
20 mai 2005
1
En effet ton code est hyperlourd et en plus on voit que c'est destiné que pour IE.
Tu peut éviter de mettre tes évènements dans chaque élément en utilisant
cette fonction :

function selObj(e){ // sélection de l'objet sous la souris
element=ie?event.srcElement:e.target;
if(!element.tagName)element=element.parentNode // pour NS6+
}

el récupère l'objet
par éxemple:

function flipflop_over(e)
{
selObj(e);mode=0;
if (mode 0) document.body.tagselect element.id;
else document.body.tagselect = '';


if (element.style.background != '#ffffcc')
{


if (mode == 0)
{
element.style.background = '#ddf0fe';
}
else
{
if (document.body.context == '0')
{
element.style.background = '#FFFFFF';
}
}


}
}
document.onmouseover=flipflop_over

et ainsi de suite

je l'ai appliqué ici