/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Dynamisk tilføjelse til tabel
Fra : Hans Larsen


Dato : 25-01-07 22:55

Hej NG,

Jeg er i gang med at lave en simpel web-applikation, og er i den
forbindelse støt på et problem.

I applikationen skal brugeren kunne indsætte nye rækker i en tabel. dvs.
der skal tilføjes et "tr"-element til tabellen, og til det element, skal
der tilføjes en række "td"-elementer.

Jeg har allerede lavet en funktion, som kan gøre dette i firefox, men
når jeg prøver den i internet explorer, virker den ikke. Nedenfor, har
jeg lavet et eksempel på, hvordan min funktion fungerer. Er der nogen
som har en idé til, hvordan jeg også får den til at virke i internet
explorer?

Eksempel:

<html>
<head>
<script>
function tryk() {
var table = document.getElementById('table')
var nytr = document.createElement('tr')
var td1 = document.createElement('td')
td1.innerHTML = 'noget'
var td2 = document.createElement('td')
td2.innerHTML = 'Andet'
         
nytr.appendChild(td1)
nytr.appendChild(td2)
table.appendChild(nytr)
}
</script>
</head>
<body>
<input type="BUTTON" value="tryk" onclick="tryk()">
<table id="table" border="1">
<tr>
<th>overskrift 1</th>
<th>overskrift 2</th>
</tr>
</table>
</body>
</html>

Med venlig hilsen
Hans

 
 
Jens Gyldenkærne Cla~ (25-01-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-01-07 23:37

Hans Larsen skrev:

> Jeg har allerede lavet en funktion, som kan gøre dette i
> firefox, men når jeg prøver den i internet explorer, virker
> den ikke. Nedenfor, har jeg lavet et eksempel på, hvordan min
> funktion fungerer.

Giv hellere et link til din side - så er det meget lettere at
hjælpe.

Se evt. <http://infimum.dk/HTML/hjaelpmig.html>
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Hans Larsen (26-01-2007)
Kommentar
Fra : Hans Larsen


Dato : 26-01-07 08:14

Jens Gyldenkærne Clausen skrev:

> Giv hellere et link til din side - så er det meget lettere at
> hjælpe.
>
> Se evt. <http://infimum.dk/HTML/hjaelpmig.html>

Det må du undskylde, men jeg kan desværre ikke linke til den side, hvor
problemet oprindeligt opstod, da det er en intern side, men jeg har et
link til det eksempel, hvor jeg har genskabt problemet:

http://flydeprut.dk/test.php

Lasse Reichstein Nie~ (27-01-2007)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 27-01-07 17:46

Hans Larsen <hjl@flydeprut.dk> writes:

> Det må du undskylde, men jeg kan desværre ikke linke til den side,
> hvor problemet oprindeligt opstod, da det er en intern side, men jeg
> har et link til det eksempel, hvor jeg har genskabt problemet:
>
> http://flydeprut.dk/test.php

Det er også fint. Faktisk er det ofte bedre at have isoleret problemet
(og det hjælper ikke så sjældent til at man selv finder en løsning
imens :)

Dit problem er at du forsøger at tilføje en TR direkte til tabellen.
Det kan man ikke. TR'er skal være inde i et TBODY-element (eller THEAD
eller TFOOT).

Prøv at ændre:
table.appendChild(nytr);
til
var tbody = table.getElementsByTagName("tbody")[0];
   tbody.appendChild(nytr);

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

Erik Ginnerskov (27-01-2007)
Kommentar
Fra : Erik Ginnerskov


Dato : 27-01-07 21:46

Lasse Reichstein Nielsen wrote:

> Dit problem er at du forsøger at tilføje en TR direkte til tabellen.
> Det kan man ikke. TR'er skal være inde i et TBODY-element (eller THEAD
> eller TFOOT).

Det er ganske vist ikke valid kode ikke at have en tbody, når man har en
thead. Men browserne plejer da at være ligeglade med den detalje.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk



Martin Mouritzen (28-01-2007)
Kommentar
Fra : Martin Mouritzen


Dato : 28-01-07 20:24

On Sat, 27 Jan 2007 21:46:10 +0100, "Erik Ginnerskov"
<erik@donotspammeplease.invalid> wrote:

>> Dit problem er at du forsøger at tilføje en TR direkte til tabellen.
>> Det kan man ikke. TR'er skal være inde i et TBODY-element (eller THEAD
>> eller TFOOT).
>
>Det er ganske vist ikke valid kode ikke at have en tbody, når man har en
>thead. Men browserne plejer da at være ligeglade med den detalje.

Men det betyder ret meget når man tilgår tabeller via. JavaScript,
nogen browsere kan godt acceptere at man ikke går gennem tbody/thead,
mens andre ikke accepterer det. Men alle fungerer med at gå gennem
tbody/thead, så det er smartest at vænne sig til.

--
Med venlig hilsen,
Martin Mouritzen.
http://www.siteloom.dk

Jens Gyldenkærne Cla~ (28-01-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 28-01-07 22:34

Erik Ginnerskov skrev:

> Det er ganske vist ikke valid kode ikke at have en tbody, når
> man har en thead.

På den eksempelside der linkes til, angives hverken thead eller
tbody i html-koden - hvad der er helt legalt.

Pointen er at tbody er et af de få elementer hvor både start- og
slut-koden (altså <tbody> og </tbody>) kan udelades.

Selv om man ikke eksplicit angiver tbody i en tabel, indgår den
stadig som element i DOM-træet - og browseren har ingen problemer
med at placere den, fordi den ved at der skal være en tbody mellem
table og tr.

Et andet eksempel på frivillig startkoder er grundelementerne i et
html-dokument - html, head og body, der alle må udelades.

Se fx følgende helt valide strict-dokument:

   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
   <title>Ultrakort html-dokument</title>
   <p>Et kort, validt (men dårligt skrevet) html-dokument.

Selv om hverken html, head eller body er skrevet ind i html-koden,
indgår alle tre elementer i DOM-træet for dokumentet (tjek evt. med
DOM Inspector i Firefox). Det er samme princip der gælder for
tbody. I praksis er langt de fleste dog enige om at angive html,
head og body med både start og slutkoder, mens det omvendt er meget
almindeligt at undlade at angive tbody.

--
Jens Gyldenkærne Clausen
»Diplomatiet består netop i, at de gamle kommatister kan få lov til
at tro, at de har vundet. Men i virkeligheden har de tabt.«
Ole Togeby i Information

Hans Larsen (27-01-2007)
Kommentar
Fra : Hans Larsen


Dato : 27-01-07 23:32

Lasse Reichstein Nielsen skrev:

> Dit problem er at du forsøger at tilføje en TR direkte til tabellen.
> Det kan man ikke. TR'er skal være inde i et TBODY-element (eller THEAD
> eller TFOOT).
>
> Prøv at ændre:
> table.appendChild(nytr);
> til
> var tbody = table.getElementsByTagName("tbody")[0];
>    tbody.appendChild(nytr);
>
> /L

Ahh, rigtig mange tak. :)
Det var dejligt, at få løst det problem.

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste