Génération dynamique de div
Bonjour,
je cherches à fabriquer en js une div qui me servira de menu sur un clic droit.
Mon point de départ est un fichier xml.
Situation de départ :
Dans mon fichier HTMl j'ai une balise div :
Code:
<div class="skin1" oncontextmenu="return false;" id="menuContext" onmouseout="hidemenu"></div>
Lorsque j'appuie sur un bouton, je vais chercher un fichier xml du type :
Code:
1 2 3 4 5
|
<data>
<MOTIF_ABSENCE id_ma="1" code_ma="CP" lib_ma="Congés payés"/>
<MOTIF_ABSENCE id_ma="2" code_ma="DEJ" lib_ma="Pause déjeuner"/>
</data> |
Je veux insérer dans ma div menuContext, une série de div+span pour chaque motif d'absence.
Voici ce que j'ai fait actuellement :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
function ConstruireDivAbsence(xml) {
var nodeList;
var node;
var i;
var divContext;
divContext = document.getElementById('menuContext');
// Création premier élément
var div = document.createElement("div");
div.id="---ABS";
div.className="menuitems";
div.onclick="remplir(this.id)";
div.onmouseover="highlight()";
div.onmouseout="lowlight()";
var span = document.createElement("span");
span.className="menuspan";
span.onmouseover="highlight()";
span.onmouseout="lowlight()";
span.innerHTML=" ";
div.appendChild(span);
divContext.appendChild(div);
nodeList = xml.getElementsByTagName("MOTIF_ABSENCE");
for (i=0;i<nodeList.length;i++) {
node = nodeList(i);
var div = document.createElement("div");
div.id=node.getAttribute("code_ma");
div.className="menuitems";
div.onclick="remplir(this.id)";
div.onmouseover="highlight()";
div.onmouseout="lowlight()";
var span = document.createElement("span");
span.className="menuspan";
span.onmouseover="highlight()";
span.onmouseout="lowlight()";
span.innerHTML=node.getAttribute("code_ma");
div.appendChild(span);
divContext.appendChild(div);
}
} |
Ma div semble bien générée puisque sur un clic droit elle s'affiche. Seulement, lorsque je passe sur un span, la fonction highlight n'est pas lancée.
Je ne comprends pas pourquoi :(
Auriez-vous une idée?
Merci d'avance