19. august 2009 - 12:22
Der er
15 kommentarer og 1 løsning
deleteRow - flere tabeller i i rækken
jeg har et lille script som skal slette rækker fra bunden i en tabel.. men efter der er begyndt at være tabeller indeni selve tabellen jeg skal slette fra går det i koks og den tæller åbenbart samtlige tr elementer i alle tabeller i mit 'tbl' element hvad kan man lige gøre ved det? var num_tr = tbl.getElementsByTagName('tr').length; while(num_tr > 50) { tbl.deleteRow(num_tr-1); num_tr--; }
Annonceindlæg fra Academic Work Denmark A/S
19. august 2009 - 13:14
#1
<ole> Det nærmeste, man kan komme det er: Du skal nok gøre noget andet =) Det er svært at råde, når man ikke kan se din markup. Prøv med et link til siden /mvh </bole>
19. august 2009 - 14:31
#2
det kunne se sådan her ud det er tr elementerne i 'tbl' tabellen jeg skal slette :) <table id="tbl"> <tr> <td> første række <table> <tr> <td>tst</td> <td>tst</td> </tr> <tr> <td>tst</td> <td>tst</td> </tr> </table> </td> </tr> <tr> <td> anden række <table> <tr> <td>tst</td> <td>tst</td> </tr> <tr> <td>tst</td> <td>tst</td> </tr> </table> </td> </tr> <tr> <td> tredje række <table> <tr> <td>tst</td> <td>tst</td> </tr> <tr> <td>tst</td> <td>tst</td> </tr> </table> </td> </tr> </table>
19. august 2009 - 15:42
#3
Ja, det er jeg helt enig i - men ser det sådan ud? Man kan ikke lave en helt generisk løsning, så det er ikke uvæsentligt, hvordan koden præcist ser ud =)
19. august 2009 - 16:50
#4
ikke fordi jeg vil modsige oleboles udsagn, men kan det ikke gøres sådan her: var num_rows = tbl.rows-1; while(num_tr > 50) { tbl.deleteRow(num_tr-1); num_tr--; } Jeg har overhovedet ikke testet og her ikke tjekket standarder eller noget, men burde det ikke være generisk nok?
20. august 2009 - 09:10
#5
Man kan godt slette alle rækker enkeltvis, men det ville være betydeligt smartere og hurtigere kun at slette i den yderste tabel ;o)
20. august 2009 - 09:16
#6
Da kun hvis man skal have fjernet alle rækkerne.. eller misforstår jeg hvad du mener..? Ud fra det hoppe11 skriver så skal de første 50 rækker jo ikke fjernes..
20. august 2009 - 09:19
#7
-> sw_red_6 - problemet er jo at #0's kode slette tr'er inde i en tabel som er i en td i den oprindelige tabel. ole siger at det er smartere bare at slette rækkerne i den oprindelige tabel, ikke hele tabellen.
20. august 2009 - 09:25
#8
@ ole hvad er dit forslag så? :)
20. august 2009 - 09:34
#9
At du læser #3
20. august 2009 - 09:42
#10
jeg har noget her, men num_tr bliver ikke alert'et.. trods jeg får returneret 'tst' hver gang? som om num_tr++ ikke gør noget, selvom jeg får 'tst' hver gang den rammer et rigtigt tr element?? function get_parent(elm, tag_name) { tag_name = tag_name.toLowerCase(); for(; elm.tagName.toLowerCase()!=tag_name; elm=elm.parentNode); return elm; } var tr_obj = tbl.getElementsByTagName('tr'); var num_tr = 0; for(var key in tr_obj) { if(get_parent(tr_obj[key], 'table').id == 'table_activity') { num_tr++; alert('tst'); } } alert(num_tr);
20. august 2009 - 09:50
#11
hmm.. tagName is NULL or not an object? for(; elm.tagName.toLowerCase()!=tag_name; elm=elm.parentNode);
20. august 2009 - 09:55
#12
hvordan kan man undgå at var tr_obj = tbl.getElementsByTagName('tr'); undgår at returnerer funktioner osv?.. men den burde da vel også kun returnere elementer med det pågældende tagname?
20. august 2009 - 14:17
#13
splazz-> Det er da også intentionen med det jeg skrev.. At der så mangler en length for at det kan virke er en mindre vigtig detalje ;o) Hvis det ikke virker kan jeg kun tilmelde mig kommentar #3..
20. august 2009 - 16:25
#14
Jeg tillader mig hermed at være ligeså rystende ligeglad med dette problems løsning, som spørgeren er!
16. oktober 2010 - 17:51
#15
smid et svar ole :)
01. november 2010 - 00:55
#16
lukker
Vi tilbyder markedets bedste kurser inden for webudvikling