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

[Prototype] Event.observe ne marche qu'une fois

25 réponses
Avatar
Jérémie
Bonsoir à tous,

J'ai créé une petite application dans laquelle on navigue de semaine en
semaine avec des icônes en forme de flêches, ayant pour id
cmdSemaineSuivante et cmdSemainePrecedente.

Voici un fragment de JS qui me pose problème :

function bindForm(e)
{
changerSemaine(e);
Event.observe($('cmdSemainePrecedente'), 'click', changerSemaine,
false);
Event.observe($('cmdSemaineSuivante' ), 'click', changerSemaine,
false);
Event.observe($('lstCentre' ), 'change', changerSemaine,
false);
} // bindForm

Event.observe(window, 'load', bindForm , false);


...


function changerSemaine(evt, typeInf)M
{
Event.stop(evt);

$('indicateur').style.visibility = "visible";
$('indicateur').style.display = "block";

var elt = Event.element(evt).id || '';

var dd = '';
var df = '';
var modeAffichage = $F('txtModeAffichage');
var infirmiere = $F('txtUtilisateur');
var centre = $F('lstCentre');


switch(elt)
{
case 'cmdSemainePrecedente':
dd = $F('txtDateDebutPrecedente');
df = $F('txtDateFinPrecedente');
break;
case 'cmdSemaineSuivante':
dd = $F('txtDateDebutSuivante');
df = $F('txtDateFinSuivante');
break;
default:
dd = $F('txtDateDebutActuelle');
df = $F('txtDateFinActuelle');
break;
}

getXhr();

... [ instrcutions AJAX sasn intérêt ]

}

Ce qui est hyper bizarre, c'est que les Event.observe appliqués aux deux
icônes n'intercepte l'évènement qu'une fois, après ils ne réagissent plus.
J'ai encore un select (id lstCentre) qui lui fonctionne sans problème.

Verriez-vous une explication ?

Merci d'avance,

Jérémie

5 réponses

1 2 3
Avatar
SAM

(déjà que je préfère les variables en français pour qu'elles se
différencient facilement de tout le vocabulaire JS DOM etc )


Ah tiens ? Moi je préfère éviter les sabirs franglais. D'une part je
trouve ça laid, d'autre part ça n'aide pas nécessairement à partager du
code.


Je ne sais pourquoi mais je m'en doutais ;-)

est-ce à dire que je puis faire :

elt.addEventListener("click", gestion_clic_un, false);
elt.addEventListener("click", gestion_clic_deux, false);

et ça me fera l'équivalent de :

onclick="
gestion_clic_un(this);
gestion_clic_deux(this;
return false;">



A peu de choses près (propagation des évnements etc):oui. Avec surtout
l'intérêt que les appels à addEventListener peuvent être dans des
scripts distincts. Par contre, of course, IE ne supporte pas cette
syntaxe, et utilise à la place une syntaxe proprio et pas tout à fait
compatible. D'où l'intérêt de bibliothèques comme prototype ou jQuery
qui 'unifient' tout ça.


Oui, une petite bibli pour ça, je l'accorde.
... une "petite" !

--
sm


Avatar
Bruno Desthuilliers


(déjà que je préfère les variables en français pour qu'elles se
différencient facilement de tout le vocabulaire JS DOM etc )



Ah tiens ? Moi je préfère éviter les sabirs franglais. D'une part je
trouve ça laid, d'autre part ça n'aide pas nécessairement à partager
du code.


Je ne sais pourquoi mais je m'en doutais ;-)


Tu a déjà essayé de debugger une bibliothèque dont tous les identifiants
sont dans une langue que tu ne connais pas ?

est-ce à dire que je puis faire :

elt.addEventListener("click", gestion_clic_un, false);
elt.addEventListener("click", gestion_clic_deux, false);

et ça me fera l'équivalent de :

onclick="
gestion_clic_un(this);
gestion_clic_deux(this;
return false;">



A peu de choses près (propagation des évnements etc):oui. Avec surtout
l'intérêt que les appels à addEventListener peuvent être dans des
scripts distincts. Par contre, of course, IE ne supporte pas cette
syntaxe, et utilise à la place une syntaxe proprio et pas tout à fait
compatible. D'où l'intérêt de bibliothèques comme prototype ou jQuery
qui 'unifient' tout ça.


Oui, une petite bibli pour ça, je l'accorde.
... une "petite" !


=~ 26 ko une fois packée pour la dernière version de jQuery. Qui ne se
limite pas, loin s'en faut, à gérer les évènements. Mais bon, si tu
préfères te palucher tout le boilerplate à la main à chaque fois, libre
à toi, hein...



Avatar
SAM
Je ne sais pourquoi mais je m'en doutais ;-)


Tu a déjà essayé de debugger une bibliothèque dont tous les identifiants
sont dans une langue que tu ne connais pas ?


Je ne vois pas de quoi j'irais me méler là

Sinon pas ni pwoblem'
de toutes façons ça n'a souvent aucune signification pour moi.
Crois-tu que addEventListener ça me parle ?
C'est juste un mot que j'apprends et range dans mon lexique JS en
tentant de me souvenir à quoi ça sert, je perds moins de temps qu'à
tenter de me le traduire à chaque coup.

Je ne suis pas très doué pour les langues et j'ai quasi autant de
difficulté à me repérer dans des variables en anglais qu'en Italien dont
je ne connais que 3 mots, sans compter que certains concepteurs ont
leurs styles. (maintenant des variables en russe là ça je dois dire...)



--
sm


Avatar
Olivier Miakinen
Le 22/11/2007 23:21, SAM répondait à Bruno Desthuilliers :

Tu a déjà essayé de debugger une bibliothèque dont tous les identifiants
sont dans une langue que tu ne connais pas ?


Je ne vois pas de quoi j'irais me méler là


C'est toute la différence entre l'ingénieur qui travaille, dans une
entreprise internationale, sur des gros projets devant être maintenus
quand il aura quitté l'équipe, et celui qui travaille pour lui ou dans
une entreprise franco-française.

Un jour, pendant ma scolarité, j'ai fait un stage destiné à convertir
dans une application des normes DIN en normes ISO, et les commentaires
et noms de variables étaient tout en allemand : moi j'ai trouvé ça
rigolo, mais heureusement j'avais fait de l'allemand à l'école.


Avatar
Bruno Desthuilliers
Le 22/11/2007 23:21, SAM répondait à Bruno Desthuilliers :
Tu a déjà essayé de debugger une bibliothèque dont tous les identifiants
sont dans une langue que tu ne connais pas ?
Je ne vois pas de quoi j'irais me méler là



C'est toute la différence entre l'ingénieur qui travaille, dans une
entreprise internationale, sur des gros projets devant être maintenus
quand il aura quitté l'équipe, et celui qui travaille pour lui ou dans
une entreprise franco-française.


je suis loin de correspondre au premier profil (pb de maintenance mise à
part, je suis plutôt dans le second cas). Et je me trouve très
régulièrement à devoir débugger ou étendre du code sous licence libre
(puisque nous utilisont essentiellement des outils libres).

Un jour, pendant ma scolarité, j'ai fait un stage destiné à convertir
dans une application des normes DIN en normes ISO, et les commentaires
et noms de variables étaient tout en allemand : moi j'ai trouvé ça
rigolo, mais heureusement j'avais fait de l'allemand à l'école.


Moi aussi, mais je serais bien en peine d'en lire un traître mot. Je ne
suis pas non plus spécialement doué pour les langues étrangères. Par
contre, je conçois mal qu'on puisse bosser dans l'informatique sans au
moins lire l'anglais technique.



1 2 3