gatsu35 Blablaté par Harko | orbitalxox a écrit :
Hum, le probleme ne vient pas de Prototype mais du DOM j'ai l'impression. J'ai essayé avec ca:
function init(){
document.getElementById("h" ).addEventListener("click", coucou2, false);
document.getElementById("f" ).addEventListener("click", coucou2, false);
document.getElementById("testimg" ).addEventListener("click", coucou2, false);
}
Dans ce cas, la fonction init() est appellée la aussi au load de la page. Et la encore , les evenements h et f qui se trouve sur la meme page fonctionnent, mais pas testimg qui est sur une autre page du site. En revanche, si je met h et f en commentaire, testimg fonctionne a nouveau.
Je ne sais pas trop quoi faire
|
tu m'étonnes que ca marche pas.
Tu essayes de taper sur des éléments qui n'existent pas d'une page à l'autre, c'est un peu crade.
Déjà avec firebug tu verrais justement les erreurs que tu fais.
En gros tu assignes un event à un élément qui n'existe pas :
"h" n'existe pas sur la page, donc erreur JS, donc le script s'arrête au niveau de l'erreur et donc "f" n'est pas traité.
2 choix s'offrent à toi.
1- Continuer à garder les onclick="" sur les éléments de ta page. Et je te dirai que ce n'est pas moche si c'est raisonnable. Vouloir tout sortir dans un fichier JS peut-être bien, mais super chiant derrière pour la maintenance. cela dépend du couple temps/argent/compétences
2- Tester chaque élément avant de lui assigner des event, c'est le minimum vitale à faire quand on fait ce que tu es en train de faire.
Code :
- function initEventHandlers(){
- if ($("f" )) Event.observe("f", "click", coucou, false);
- if ($("g" )) Event.observe("g", "click", coucou, false);
- if ($("h" )) Event.observe("h", "click", coucou, false);
- }
|
Sinon le plus sexy est de passer par une fonction qui justement s'occupe de tester l'élément et de rajouter l'event seulement si celui-ci existe :
Code :
- function addEventIfExists(element, event, function) {
- if ($(element)) Event.observe(element, event, function, false);
- }
- function initEventHandlers(){
- addEventIfExists("f", "click", coucou);
- addEventIfExists("g", "click", coucou);
- addEventIfExists("h", "click", coucou);
- }
|
|