Récupérer l'id d'un élément créé à la volée
Bonsoir à toutes et à tous,
Je suis en train de construire une grille de saisie de 0 à max, max étant <= 99.
J'ai trouvé un code qui fait un superbe calendrier et j'ai essayé de le modifier pour avoir le même rendu visuel avec ma grille et ce fameux calendrier qui est ici https://blog.niap3d.com/calendrier-javascript/ pour ceux que çà intéresse.
Maintenant mon problème. je n'arrive pas à récupérer l'id (ou à défaut l'innerHTML, car c'est ce dont j'ai besoin) de la cellule cliquée.
Je reçois toujours l'id de la dernière cellule créée quelle que soit celle sur laquelle je clique.
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
|
grilleInitialise = function(nb, NbMax)
{
var i, j , NbLig, NbCol;
NbLig = Math.sqrt(NbMax); // Renvoie la racine carrée du nombre passé en paramètre. x = Math.sqrt(9); //donne x = 3
i = Math.trunc(NbLig); // var x = Math.trunc(Nombre); renvoie la partie entière (signée) d'un nombre. var x = Math.trunc(-3.65);//donne x = -3
if (i == 0) {NbCol = NbLig;} // Si on a un compte rond
else // Si on n'a pas un compte rond
{
NbLig = i;
NbCol = i +1;
}
var grl = jsSDPObj[nb];
document.getElementById('grille' + grl['id']).innerHTML = '';
var elT = DomElementInit('table', {'parent': document.getElementById('grille' + grl['id']), 'class': grl['classTable']});
var num = caseSel = 0;
while (num <= NbMax)
{
for(j = 0; j < NbLig; j++)
{
var elTr = DomElementInit('tr', {'parent': elT, 'id': 'tr' + j});
for(i = 0; i < NbCol; i++)
{
var cell = DomElementInit('td', {'parent': elTr, 'id': 'td' + num, 'class': ((num == 5) ? grl['classCaseSelect']:grl['classCellule']), 'content': num}); // Opérateur ternaire ()?... (condition) ? instruction si vrai : instruction si faux
cell.addEventListener('click', function(){ grilleClick(nb, cell.id, NbMax); }, false);
num++;
if (num > NbMax) break;
}
elTr = DomElementInit('tr', {'parent': elT});
if (num > NbMax) break;
}
}
} |
S'il vous-plait, quelqu'un pourrait-il m'expliquer ce qu'il me faut modifier pour que çà fonctionne. Je crois que ce doit être par là.
Code:
cell.addEventListener('click', function(){ grilleClick(nb, cell.id, NbMax); }, false);
Je comprend bien que 'cell' a reçu au dernier tour de roue la valeur max mais je ne vois pas comment récupérer la cellule cliquée.
Merci déjà d'avoir pris le temps de lire tout çà.