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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 çà.