Aller au contenu

APZO

Membre
  • Compteur de contenus

    208
  • Inscription

  • Dernière visite

  • Points

    183 [ Donate ]

APZO's Achievements

Baby Forumeur

Baby Forumeur (1/14)

  • Premier post
  • Collaborateur Rare
  • Commence des conversations

Badges récents

2

Réputation sur la communauté

  1. C'est bon le problème est résolu, il fallait plus toucher au fichier xul qu'au fichier js, c'est un peu compliqué à expliquer ici :) En tout cas merci pour vos contributions.
  2. J'ai modifié comme tu m'as dis mais j'ai rien qui réagit aux clics. Bon je vais laisser tomber cette manière de faire, je vais voir autre chose. Merci pour votre aide.
  3. Avant de tester les événements, je vois que ça ne m'affiche plus aucun élément Je pense avoir une piste, j'ai rajouté cette ligne dans ma fonction create : i.setAttribute("id", num); Et maintenant je peux faire mon getElementById seulement le problème c'est que ma boîte d'alerte avec "Banane" s'affiche toute seule à chaque fois qu'un élément est créé sans pour autant que j'ai cliqué dessus...
  4. Oui j'ai testé et j'ai bien l'id de mon élément qui s'affiche.
  5. Non j'ai la garantie que mon "kiwi" existe bien, c'est au niveau de mon deuxième getElementById.
  6. Bonjour, j'ai les deux fonctions suivantes : create: function (num, val) { const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; var i = document.createElementNS(XUL_NS, "treeitem"); var r = document.createElementNS(XUL_NS, "treerow"); var c1 = document.createElementNS(XUL_NS, 'treecell'); var c2 = document.createElementNS(XUL_NS, 'treecell'); var c3 = document.createElementNS(XUL_NS, 'treecell'); i.setAttribute("container", true); i.setAttribute("open", true); c1.setAttribute("label", num); c2.setAttribute("label", val); c3.setAttribute("value", false); r.appendChild(c1); r.appendChild(c2); r.appendChild(c3); i.appendChild(r); return i; } et fonction: function (liste){ try{ root = document.getElementById("kiwi"); //Element créé dans le code html for(o in liste){ root.appendChild(create(liste[o].id, liste[o].name)); document.getElementById(liste[o].id).addEventListener("click", alert("Banane"), false); } } catch(e){ alert(e); } } J'obtiens un message d'erreur me disant que document.getElementById(...) is null et je ne vois pas d'où ça peut venir. Je n'arrive pas à accéder à mes éléments. L'erreur peut sembler simple, je début en javascript :)
  7. Tu as répondu à ma question lorsque tu m'as dit qu'il fallait simplement utiliser this.id pour récupérer l'id de l'élément sur lequel on a cliqué, après la fonction se déroule normalement et ça devrait fonctionner. Maintenant je dois tester mais je peux pas le faire pour le moment.
  8. Voici le code complet : loadTree: function (id) { if(id != undefined) nodeId = "/"+id; this.loadUrl("www.banane.com/"+nodeId); if( this.url == '' ){ alert("Impossible de charger la liste des scénarios."); window.close(); } else{ this.request(this.url, this.afficherScenarios, "JSON"); /*Faire une boucle pour ajouter des clic listener sur chaque dossier*/ for(o in listeGlob){ if(listeGlob[o].type == "folder"){ document.getElementById(listeGlob[o].id).addEventListener("click", function(e) { truc.loadTree(this.id); }, false); } } } }
  9. En fait ailleurs dans le code je fais une requête avec l'objet XMLHttpRequest Ensuite je récupère le résultat de la requête sous forme d'un tableau grâce à Array(JSON.parse(httpRequest.responseText)) et je met ça dans le tableau listeGlob Ces réponses sont des éléments avec un id et un type, il se trouve qu'en faisant par exemple listeGlob[0].type j'obtiens le type de l'élément sous forme d'une chaine de caractère. Et ma boucle consiste à ajouter des click listener uniquement sur les dossiers. Il n'y a pas de récursivité en javascript ?? Je ne l'ai pas mis mais dans loadtree j'ai une méthode qui me permet de faire la requête, donc je rappelle loadTree pour faire une requête sur une autre URL (qui dépend justement de l'id du dossier sur lequel on a cliqué)
  10. J'ai pas pu tester encore, qu'est-ce qui ne va pas ? Il faut peut être mettre : document.getElementById(listeGlob[o].id).addEventListener("click", function(e) {truc.loadTree(this.id); }, false);
  11. En fait c'est parce que j'ai quelque chose de la forme : var truc = { ... loadTree: function (id){ for(o in listeGlob){ if(listeGlob[o].type == "folder"){ document.getElementById(listeGlob[o].id).addEventListener("click", function(e) {this.loadTree(this.id); }, false); } } } , ... }
  12. D'accord, en fait ce serait : document.getElementById(listeGlob[o].id).addEventListener("click", function(e) { this.loadTree(this.id); }, false);
  13. Bonjour, j'ai une instruction dans mon code javascript qui est la suivante : for(o in listeGlob){ if(listeGlob[o].type == "folder"){ document.getElementById(listeGlob[o].id).addEventListener("click", function(e) { this.loadTree(); }, false); } } Elle me permet d'ajouter un listener sur chaque élément d'une certaine liste. J'aimerais savoir comment je pourrais récupérer l'id de l'élément sur lequel on aurait cliqué. Cordialement.
×