/ 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
table.innerHTML giver fejl i IE6?
Fra : Lasse Reichstein Nie~


Dato : 03-07-03 18:33


Jeg prøver at teste nogle forskellige måder at bygge en tabel på. Når
jeg har et table-element og forsøger at skrive til dets
innerHTML-egenskab, så giver det fejl i IE6 (men virker i Opera 7 og
Mozilla!).

Eksempel-kode er:
---
<html>
<head><title>test</title>
<script type="text/javascript">
function init() {
var myTable = document.getElementById("table");
myTable.innerHTML = "<tbody><tr><td>X<\/td><\/tr><\/tbody>";
}
</script>
</head>
<body onload="init()">
<table id="table">
<tr><td>Y</td></tr>
</table>
</body>
</html>
---

Fejlen der gives er "Error: Unknown runtime error", og det er i
tildelingen til innerHTML. Jeg har prøvet med andre strenge, med og
uden <tbody>, og lige lidt virker det. Jeg har prøvet at lave et
tbody-element og bruge dets innerHTML, og det gav samme fejl. Samme
med tr-elementet.

Er det et kendt problem at man ikke kan skrive til innerHTML på table,
tbody og tr-elementer i IE, eller er det noget jeg gør galt?

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

 
 
Stig Nygaard (03-07-2003)
Kommentar
Fra : Stig Nygaard


Dato : 03-07-03 23:10

Hej Lasse


Lasse Reichstein Nielsen wrote:
> Jeg prøver at teste nogle forskellige måder at bygge en tabel på. Når
> jeg har et table-element og forsøger at skrive til dets
> innerHTML-egenskab, så giver det fejl i IE6 (men virker i Opera 7 og
> Mozilla!).

Umiddelbart burde det vel virke i IE6 skulle jeg mene. Jeg kan kun
gætte, men har bemærket at du som id på din tabel har "table". Prøv et
id som ikke hedder det samme som et tag-navn.

Iøvrigt har DOM-standarden dedikerede funktioner til at indsætte rækker
og felter i tabeller. Du kunne jo prøve dem også hvis du ikke kan få
innerHTML til at fungere.


--
Mvh. Stig
stig[at]rockland[dot]dk
http://www.rockland.dk/
* Bedre (D)HTML ?! --> http://www.rockland.dk/stig/upghtml.html *


Lasse Reichstein Nie~ (04-07-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 04-07-03 00:15

Stig Nygaard <stig@REMOVE-THISrockland.dk> writes:

> Umiddelbart burde det vel virke i IE6 skulle jeg mene.
> Jeg kan kun gætte, men har bemærket at du som id på din tabel har
> "table". Prøv et id som ikke hedder det samme som et tag-navn.

Det var ikke det.

> Iøvrigt har DOM-standarden dedikerede funktioner til at indsætte
> rækker og felter i tabeller. Du kunne jo prøve dem også hvis du ikke
> kan få innerHTML til at fungere.

Dem prøver jeg også nu. Jeg forsøger at sammenligne forskellige måder
at lave tabeller på, inkl. to måder med .innerHTML, og med ren
document.createElement. De specifikke table-DOM-metoder ser ud til at
være meget langsomme i IE, meget langsommere end at bruge
document.createElement.

Nu jeg har sundet mig, har jeg fundet svaret på MSDN:
---
The property is read/write for all objects except the following, for
which it is read-only: COL, COLGROUP, FRAMESET, HTML, STYLE, TABLE,
TBODY, TFOOT, THEAD, TITLE, TR. The property has no default value.
---
Så det var et kendt problem.

Men tak for svaret! Jeg havde glemt insertRow i min test.
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'

Martin Hintzmann And~ (04-07-2003)
Kommentar
Fra : Martin Hintzmann And~


Dato : 04-07-03 07:47

Lasse Reichstein Nielsen wrote:
>
> Dem prøver jeg også nu. Jeg forsøger at sammenligne forskellige måder
> at lave tabeller på, inkl. to måder med .innerHTML, og med ren
> document.createElement. De specifikke table-DOM-metoder ser ud til at
> være meget langsomme i IE, meget langsommere end at bruge
> document.createElement.
>

Peter Poul-Koch har lavet en lignende test, hvor han prøver at finde ud
af hvilke metoder der er hurtigst til at generere store mængder data.

http://www.xs4all.nl/~ppk/js/innerhtml.html

Det tyder på at man skal benytte metode 5 eller 6 hvis man skal have
bedste resultat i de 3 browsere (Moz, Op, IE), hvor man bruger innerHTML
med concatenation eller push.

Hintzmann c",)



Lasse Reichstein Nie~ (04-07-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 04-07-03 12:16

Martin Hintzmann Andersen <no@spam.dk> writes:

> Peter Poul-Koch har lavet en lignende test, hvor han prøver at finde
> ud af hvilke metoder der er hurtigst til at generere store mængder
> data.

> http://www.xs4all.nl/~ppk/js/innerhtml.html

Det var den jeg huskede, og selv ville lave en version af. Tak for
linket. Jeg ville gerne kunne ændre størrelsen af tabellen, da fx
"innerHTML with concatenation" sandsynligvis har en kvadratisk
tidskompleksitet, hvilket er svært at se med et enkelt eksempel.

> Det tyder på at man skal benytte metode 5 eller 6 hvis man skal have
> bedste resultat i de 3 browsere (Moz, Op, IE), hvor man bruger
> innerHTML med concatenation eller push.

Afgjort metode 6. I min test er den ti gange så hurtig som metode 5
i IE6. Resten af metoderne er også grimt ineffektive i IE.

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

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste