Avatar billede hoppe11 Nybegynder
29. december 2007 - 13:09 Der er 12 kommentarer og
2 løsninger

tbl insertRow + select og options

Hvordan er det muligt at lave en funktion som i mit eksempel nedenfor kan indsætte en ny række efter den eksisterende række som har select'en med onchange?

Efterfølgende skal det være muligt at slette den nyoprettede række

Jeg ved heller ikke om det er den bedste løsning med insertRow osv?

<table>
  <tr>
    <td><select onchange="min_funk()"></select></td>
  </tr>
</table>
Avatar billede roenving Novice
29. december 2007 - 14:32 #1
-- generelt er det ikke godt at have events på ting før de er indsat i dokumentet, så det er ikke hensigtsmæssigt f.eks. at klone den ovenstående, men ellers vil det være den nemmeste tilgang ...

-- hvornår og hvordan vælger man at indsætte/slette ?-)

Se f.eks. disse tråde: http://exp.dk/spm/666830 og http://exp.dk/spm/672130 !-)
Avatar billede hoppe11 Nybegynder
29. december 2007 - 16:21 #2
sidder lige og prøver at skrive mit eget script mens jeg lurer på dit :)

men jeg kan ikke få det her til at virke, da jeg får en fejl i de sidste to linjer, men tablen får godt nok sat en ny baggrund?

function tst(elm)
{
    var tr = getParent(elm.parentNode, 'tr');
    var tbl = getParent(tr, 'table');
   
    tbl.style.backgroundColor = '#F5DFDF';
   
    var tr_new = tr.cloneNode(false);
    tbl.insertBefore(tr_new, tr);
}
Avatar billede roenving Novice
29. december 2007 - 16:26 #3
En trs parent er et tbody-element, så prøv i stedet:

  var tbl = tr.parentNode;
Avatar billede hoppe11 Nybegynder
29. december 2007 - 16:31 #4
tbody? det er måske noget man bare skal vide for det er jo ikke at se ud fra kilden
Avatar billede roenving Novice
29. december 2007 - 16:42 #5
Det er rigtigt, at alle browsere reparerer kildekoden, hvis ikke den indeholder et tbody-element, og for mig selv var det også først da jeg virkelig blev irriteret på manglende virkning af appendChild på table-elementer i IE (det kører fint i Mozilla/FireFox !-), at jeg opdagede dette (indskudte) element ...

-- men kigger du i dtd'en, er det helt indlysende, tr-elementer kan ikke eksistere direkte i table-elementer, men skal have enten thead-, tbody- eller tfoot-elementer omkring sig !o]
Avatar billede hoppe11 Nybegynder
29. december 2007 - 16:49 #6
findes der så en metode så man kan indsætte sit element efter og ikke før?

du nævner så selv her appendChild, men det er vel et element i elementet man indsætter?
Avatar billede hoppe11 Nybegynder
29. december 2007 - 16:51 #7
måske man skal ud og tælle sig frem til det, ved at gå tilbage og derud fra finde ud af hvor det nye element skal placeres?
Avatar billede roenving Novice
29. december 2007 - 16:57 #8
appendChild indsætter sidst i parent-elementet (append: lægge til bagest !-)

-- og insertBefore er eneste alternativ, hvis det er tilføjelse af et element, du ønsker (ellers kan du måske bruge replaceChild !-)
Avatar billede hoppe11 Nybegynder
29. december 2007 - 17:10 #9
men er det ikke muligt at tælle sig frem? altså tælle sig tilbage fra det element man befinder sig i og tilbage til table-elementet?

er tbody tags omkring hver række (tr elementer) eller er tbody bare indeni selve table-elementet?
Avatar billede roenving Novice
30. december 2007 - 11:57 #10
Normalt er der kun et tbody-element i en table, men der må gerne være flere (hvilket f.eks. kan bruges til at formattere forskelligt !-)

-- jeg forstår ikke hvad du mener med at tælle, men man kan jo altid finde en parentNode, og derfra finde childNodes, og de kan tælles !o]
Avatar billede hoppe11 Nybegynder
30. december 2007 - 12:20 #11
jeg har på sin vis også droppet det, men dog stadig brugt noget af det du har skrevet

lav et svar så deler vi points :)
Avatar billede roenving Novice
30. december 2007 - 12:23 #12
Oki '-)
Avatar billede roenving Novice
30. december 2007 - 13:11 #13
-- og tak for point ;~}
Avatar billede olebole Juniormester
02. januar 2008 - 15:33 #14
<ole>

Indsættelse af element (oNew) efter et andet (oOld):
    oOld.parentNode.insertBefore(oNew, oOld.nextSibling);

Eksisterer der ikke et element efter oOld, vil oOld.nextSibling returnere null - og oNew appendes til oOld.parentNode  ;o)

/mvh
</bole>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester