Bonjour à tous,
Je dois en ce moment développer un système de bouton "monter/descendre".
Avant que tout le monde s'exclame "" !!! Sachez que j'ai réussi à faire l'action mais que je rencontre un problème sur le "onclick".
J'ai un tableau de la forme suivante :
|| colonne 1 || colonne 2 ||
|| libelle1 || delete ||
|| libelle2 || delete ||
|| libelle3 || delete ||
|| libelle4 || delete ||
Le "delete" correspond à une action qui supprime la ligne et qui va faire d'autres actions sur d'autres pages.
Et à côté de ce tableau, j'ai un tableau de boutons fleches qui permet de déplacer les TR de haut en bas.
Mon problème : j'arrive à déplacer les éléments, j'arrive à remettre le bon onclick pour les libelles (onclick = surligner la ligne en bleu) mais je n'arrive pas à bien remettre le onclick des delete, quand je déplace un TR le bouton delete ne fonctionne plus.
Voici ma fonction :
Si j'ai été clair, mon gros problème est que quand je bouge un TR, le onclick se supprime automatiquement et je suis obligé de le remettre. Pour la sélection de ligne, j'arrive à le remettre mais pour le bouton delete je n'y arrive pas...
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 /**************************************************************************** * FONCTION : executerFleche * DESCRIPTION : Fonction qui trie le tableau de sélection depuis les boutons fleche * RETOUR : aucun * PARAMs : action de type String (monter/descendre) * DER MODIF : 30/08/2013 *****************************************************************************/ function executerFleche(action,etab,libJs,token) { var table = document.getElementById('selections#tableau'); var tbody = table.tBodies[0]; //je récupère ma balise <tbody> contenant les <tr> à déplacer var found = false; var child; // permet de trouver le <tr> sélectionné et de mettre sa valeur dans la variable child for(var i=0;i<tbody.childNodes.length && !found;i++) { child=tbody.childNodes[i]; if (child.nodeType==1 && child.tagName.toLowerCase()=='tr') for (j=0;j<child.childNodes.length;j++) if (child.childNodes[j].className=='IHMDataSelected') { found=true; break; } } // Si aucun TR n'est sélectionné if ( !found ) { alert("Veuillez sélectionner un élément dans le tableau de sélection.") } else { // selon la fleche cliquée, les actions sont differentes switch (action) { case 'doubleMonter': while ( child.rowIndex > 2 ) { // on récupère les TD du TR sélectionné var myTds = child.getElementsByTagName("td"); myTds[0].value = myTds[0].value + 1; var previousRow = table.rows[child.rowIndex - 1]; var myInputsPrevious = previousRow.getElementsByTagName("td"); myInputsPrevious[0].value = myInputsPrevious[0].value - 1; // On met dans une variable temporaire le contenu du TR sélectionné var tmp = child.innerHTML; table.rows[child.rowIndex].innerHTML = previousRow.innerHTML; table.rows[child.rowIndex - 1].innerHTML = tmp; // On remet le onclick sur le TD du libelle child.childNodes[0].onclick = function() { selectOnClick(this); }; // On change le child avec la nouvelle valeur du TR sélectionné child = table.rows[child.rowIndex - 1]; // On remet également le onclick sur le deuxième TR qui a bougé child.childNodes[0].onclick = function() { selectOnClick(this); }; } break; // ....... } }
Je tiens à préciser que je suis débutant en JS et donc que mon code n'est pas forcément très "joli" !
Si vous pouviez m'aider à trouver une solution je vous en serait reconnaissant ! J'avais pensé à bouger seulement le TD du libellé et de ne pas toucher aux TD "delete" lors du déplacement mais je n'ai pas trouvé comment faire
Merci d'avance !![]()
Partager