Inserer une ligne après la ligne sur laquelle on clique [JS] - HTML/CSS - Programmation
Marsh Posté le 21-05-2007 à 14:07:42
je veux une tof du chien avant de repondre
sinon
1- tu crée a ligne comme il faut avec dom ( avec des td = document.createElement('td') , un tr = document.createElement('tr') et des tr.appendChild(td)
2- si tu insere la ligne a la fin de ton tableau ( row.nextSibling est null ) tu fait un row.parentNode.appendChild(tr)
3 sinon, tu l'insere avant la suivante avec un row.parentNode.insertBefore(tr,row )
Marsh Posté le 21-05-2007 à 14:10:04
Tu pourrais me détailler la fonction un peu comme j'ai fait? je mélange un peu tout dans ce que tu me dis, et le JS c'est pas trop mon truc
Marsh Posté le 21-05-2007 à 14:12:07
techniquement, j'ai mis plus de detail que toi( vu que j'utilse des fonctions qui existent reellement )
apres, je te laisse un peux voir comment fonctionnnent les fct que je te donne ( en plus sans savoir la gueule de ton tableau , ca va etre chaud d'en faire plus )
a moins que tu n'ai des questions précises
Marsh Posté le 21-05-2007 à 14:22:05
Code :
|
Putain, on est obligé de faire le travail soit même maintenant
Bon ça marche, j'ai encore un truc, pour mettre un colspan sur une cellule, je fais
Code :
|
??
Merci beaucoup de ton aide, et de ta rapidité.
Et mes fonction utilisée au debut existent
Marsh Posté le 21-05-2007 à 14:25:17
nan mais nan hein
insertRow fait ça très bien, c'est ptêt pas la peine d'en recoder une.
Et au passage insertRow prend bien un index et pas seulement 0,1 ou -1.
Par contre la propriété rowIndex c'est sur une ligne alors que tu l'as fait remonté au parentNode ( le tableau) ça risque donc pas de marcher.
Enfin pour qu'une "ligne"(tr) soit valide en DOM, il lui faut contenir au moins un td ( ce qui n'est pas le cas dans ton exemple).
Bref la fonction à peine retouché et qui "doit" marcher c'est:
Code :
|
Note: un petit oeil sur la doc t'aurais appris tout ça: http://developer.mozilla.org/en/do [...] .insertRow
Marsh Posté le 21-05-2007 à 14:28:36
anapajari a écrit : nan mais nan hein
|
c'est vrai que j'avais pas pensé a insertRow + innerHTML
mais je préfère faire les cases a la main pour gérer le contenu , et les styles à appliquer
Marsh Posté le 21-05-2007 à 14:31:37
nan mais le inner il est violement goret faut pas faire ça !!!
C'était juste pour voir quelque chose que je l'ai laissé trainé!
On est censé faire du insertCell et du createTextNode pour mettre des données dedans
note: j'ai par contre pas compris ton argument sur les styles
Marsh Posté le 21-05-2007 à 14:31:46
anapajari a écrit : nan mais nan hein Par contre la propriété rowIndex c'est sur une ligne alors que tu l'as fait remonté au parentNode ( le tableau) ça risque donc pas de marcher. Enfin pour qu'une "ligne"(tr) soit valide en DOM, il lui faut contenir au moins un td ( ce qui n'est pas le cas dans ton exemple). Bref la fonction à peine retouché et qui "doit" marcher c'est:
Note: un petit oeil sur la doc t'aurais appris tout ça: http://developer.mozilla.org/en/do [...] .insertRow |
Merci pour ton aide aussi, j'ai cherché aussi t'inquiete pas j'ai ramé une heure avant de poster, je viens pas chialer ici au moindre probleme
Bref merci encore je crois que je vais continuer sur ma solution bien plus simple, mon site ne doit être compatible que IE6, donc c'est très bien , on me demande d'aller au plus vite, du moment que ça marche, c'est bien . En touyt cas je garde pour moi, l'autre solution
Marsh Posté le 21-05-2007 à 14:44:10
code de ta page? Parce que http://chezmoicamarche.com/
Code :
|
Marsh Posté le 21-05-2007 à 14:51:08
anapajari a écrit : nan mais le inner il est violement goret faut pas faire ça !!! |
J'ai des styles differents suivant les lignes et les colonnes sur le style sur lequel je bosse. Donc j'ai un( des ) classes a metrte sur le tr , et parfois une ( des ) classes a mettre sur le td
pour la petite histoire, le tr sert change de couleur toutes les lignes ( classique )
les td changent de couleur pour afficher par exemple la plus grosse valeur du tableau, ou une valeur superieure a un seuil , ...
au final , ca va quasi aussi vite avec createElement('td')
Marsh Posté le 21-05-2007 à 15:08:33
Arf la galère, mon code fait 400 lignes, c'est un énrome tableau de stats, et j'avais pas vu que j'avais mis mon evennement JS sur un TD au lieu du TR
Merci énormément à vous deux
Marsh Posté le 21-05-2007 à 15:19:08
flo850 a écrit : J'ai des styles differents suivant les lignes et les colonnes sur le style sur lequel je bosse. Donc j'ai un( des ) classes a metrte sur le tr , et parfois une ( des ) classes a mettre sur le td |
Bin ça change rien du tout et ça va aussi tout court
Le insertRow c'est exactement un createElement('tr') + append dans le tableau. D'ailleurs insertRow te retourne une référence sur ton obj tr avec les mêmes propriétés qu'un createElement.
Et pareil pour insertCell (createElement('td') + append).
Par contre IE a tendance à mieux tolérer le bourrinage de ligne via les insert* qu'en DOM pur.
Alisteroid a écrit : Arf la galère, mon code fait 400 lignes, c'est un énrome tableau de stats, et j'avais pas vu que j'avais mis mon evennement JS sur un TD au lieu du TR |
Marsh Posté le 21-05-2007 à 15:20:27
anapajari a écrit : Bin ça change rien du tout et ça va aussi tout court |
bon alors je me complique la vie pour rien ( en meme temps ca change pas grd chose niveau quantite de code)
Marsh Posté le 21-05-2007 à 15:20:33
Bon une toute dernière question promis juré :
Si je veux attribuer la fonction delerow à l'evenement onclick pour la nouvelle ligne comment dois je le déclarer?J'ai essayé différentes trucs sans succes.
En fait mon but est d'inserer une ligne lorsque je clique sur une ligne et de la supprimer lorsque je clique sur la ligne d'origine ou sur la ligne crée.
Marsh Posté le 21-05-2007 à 15:29:50
au lieu de:
Code :
|
mettre
Code :
|
et lire la doc: http://developer.mozilla.org/en/do [...] .deleteRow
edit: et pour que ça fait pareil sur la ligne d'origine, il faut changer le handler du row "d'origine" en t'inspirant de ça
Marsh Posté le 21-05-2007 à 13:55:53
Bonjour à tous,
Je cherche à inserer dans un tableau HTML, juste après la ligne sur laquelle j'ai cliqué.
J'ai fait :
HTML
pour chaque ligne de mon tableau
JS
Malheureusement je m'apercoit que la fonction insertRow(), n'accepte que 0,1 et -1 comme valeur
Je vois pas trop comment faire
Aidez moi ou je tue mon chien
Message édité par Alisteroid le 21-05-2007 à 13:57:02