cs_yann68moh
Messages postés12Date d'inscriptionjeudi 16 mars 2006StatutMembreDernière intervention25 mars 2012
-
25 mars 2012 à 15:38
pmcoste
Messages postés72Date d'inscriptionmercredi 7 février 2007StatutMembreDernière intervention25 juillet 2013
-
2 avril 2012 à 15:36
Bonjour à tous,
Je rencontre un petit soucis et malgré toutes mes recherches je n'arrive pas a trouvé une solution... Je m'explique :
J'ai deux div imbriqués l'un dans l'autre :
Texte
Puis j'ai mon code JS qui crée un event onclick sur chaque div dans la page :
function load_javascript()
{
var div = document.getElementsByTagName("div");
for (var i = 0; i < div.length; i++) {
var obj = div[i];
var obj_id = obj.id;
obj.onclick = function () { click(obj_id); return false};
}
}
function click(value) {
alert(value);
}
Mais lorsque je clique sur html_content :
- Une fenêtre de dialogue s'affiche avec le nom : html_content_text
Et lorsque je clique sur html_content_text :
- Deux fenêtres s'ouvrent avec comme nom : html_content_text
pmcoste
Messages postés72Date d'inscriptionmercredi 7 février 2007StatutMembreDernière intervention25 juillet 20131 2 avril 2012 à 15:36
Bonjour,
Ce fonctionnement est normal, tu créés deux évènements :
- 1 sur html_content
- 1 sur html_content_text
Et comme ces deux div sont imbriquées, lorsque tu cliques sur "html_content_text", les deux évènements sont exécutés : c'est comme si tu cliquais sur tes deux div.
Ton autre problème, à savoir que tu récupères deux fois le même texte "html_content_text", c'est également normal, car au moment du click, le javascript va récupérer le dernier "obj_id" généré. Pour résoudre ce problème, il faut faire une closure :
function load_javascript()
{
var div = document.getElementsByTagName("div");
for (var i = 0; i < div.length; i++) {
var obj = div[i];
var obj_id = obj.id;
obj.onclick = (function (id) {return function(){ click(id); return false};})(obj_id);
}
}