Avatar billede janegil Nybegynder
28. januar 2001 - 21:16 Der er 7 kommentarer og
1 løsning

W3C-DOM skript for tabell-opprettelse

http://lbk.olivant.fo/test/DOM.html bruker javascript mot W3Cs DOM. Skriptet oppretter først et H1-element, deretter et TABLE-element.

Opprettelsen av H1 virker i både IE5.5 og Netscape 6. Men opprettelsen av tabellen virker bare i Netscape, selv om jeg prøver å kode begge på samme måte.

Har noen et forslag til hva som gjør at tabellen går galt i IE, når H1 går fint? Er det mulig å få det til å virke i IE, uten å falle tilbake til IE4-DOM?
Avatar billede defrost Nybegynder
28. januar 2001 - 21:22 #1
Dette virker i IE5.5. Prøv at sammenligne og se, om du kan finde din fejl:

<html>
<body>
<script>
function buildTable(){
  docBody = document.getElementsByTagName(\"body\").item(0)
  myTable = document.createElement(\"TABLE\")
  myTable.id =\"TableOne\"
  myTable.border = 1
  myTableBody = document.createElement(\"TBODY\")
 
  for (i = 0; i < 3; i++){
    row = document.createElement(\"TR\")
   
    for (j = 0; j < 3; j++){
     
      cell = document.createElement(\"TD\")
      cell.setAttribute(\"WIDTH\",\"300\")
      cell.setAttribute(\"HEIGHT\",\"50\")
      cell.setAttribute(\"align\", \"right\")
      textVal = \"Cell \" + i + \"_\" + j
      textNode = document.createTextNode(textVal)
      cell.appendChild(textNode)
      row.appendChild(cell)
   
    }
 
  myTableBody.appendChild(row)
 
  }
 
  myTable.appendChild(myTableBody)
  docBody.appendChild(myTable)
}
window.onload = buildTable
</script>
</body>
</html>
Avatar billede jakoba Nybegynder
28. januar 2001 - 21:45 #2
ku det passe at TBODY er blevet obligatorisk i DOM?
defrost laver en \"TBODY\" og attacher; men janegil mangler den.
Avatar billede janegil Nybegynder
29. januar 2001 - 09:54 #3
Godt lest, jakoba! Det var TBODY som skulle til for å få eksemplet mitt til å virke i IE også.

I DOM-sammenheng er det ogte nyttig å bruke TBODY for å kunne handtere flere TR\'elementer som en enhet. Men å gjøre det obligatorisk, det må være en feil i IE.

Når jeg går videre enn eksemplet, får jeg fortsatt problemer – debugging av javascript/DOM er visst en hvit flekk på kartet... Kunne se ut som det er viktig om jeg setter TD inn i TR før eller etter at jeg har satt TR inn i TBODY, men det ville vel stride mot hele ideen med å bruke DOM til å gjøre dokumentet dynamsk?

Avatar billede janegil Nybegynder
29. januar 2001 - 11:56 #4
defrost: er navnet ditt en referanse til et produkt som konverterer Cold Fusion til ASP?

Jeg finner meg selv i gang med å bruke Cold Fusion til å lage et mega-skript som jeg sender ut til browseren, hvor skriptet bygger dokumentet fra grunnen av. Det ville nok vært smartere om det skriptet kjørte på serveren. Kan ASP, eller noe annet for den del, kjøre DOM-skripting på serveren? Min side kommer fx til å være uleselig på Opera mens vi venter på W3C-DOM støtte der. Hvis skriptet kjører i serveren, er det ikke en gang viktig hilken DOM det bruker. Hvis det virker, så virker det.
Avatar billede defrost Nybegynder
29. januar 2001 - 12:03 #5
janegil: Nej, mit handle har intet med det at gøre. Det har bare hængt ved i en del år efterhånden.. Defrost, used to be cool. :)

Du kan ikke helt sige om ASP eller PHP understøtter DOM-skripting, da de bare sender kode til browseren. Om det så er DOM-script eller standard HTML eller et jpg-billede er egentlig underordnet, men det lyder som om dit projekt godt kunne have brug for server-side-scripting.

Kender desværre ikke Cold Fusion ret meget.
Avatar billede janegil Nybegynder
29. januar 2001 - 12:16 #6
Cold Fusion er god, men begynner i mine øyne å bli litt gammeldags. Jeg savner serverside XSL/T, evt. supplert med serverside DOM.

Selv synes de sikkert at de er moderne, de har masse Javabønnegreier, som hittil ikke har interessert meg. Dessuten er de nylig fusjonert inn i Macromedia, så det kommer vel Flash-DOM programmering før HTML/XML-DOM. (Kjære Gud! La Flash skifte til XML som dataformat FØRST! Det er selvsagt usunn forretning, for så kunne jeg lage Flash-filer uten å eie noen Flash-editor.)
Avatar billede janegil Nybegynder
29. januar 2001 - 14:39 #7
Konflikt mellom IE4-DOM og W3C-DOM i IE5.5

Jeg har kodet

<div id=\"tdb\"></div>
<script type=\"text/javascript\">       
  tdb=document.getElementById(\"tdb\");

Dette er korrekt W3C-DOM kode, der den 3. linjen oppretter en ny javascriptvariabel som heter \'tdb\'.

Men IE5.5 forstår IE4-DOM også, og der eksisterer en variabel som heter \'tdb\' fra før. Jeg synes det er logisk å gi javascriptvariablen og elementet samme navn – beklageligvis syntes designerne bak IE4-DOM det samme, så vi kolliderte.

Konklusjon: For å få W3C-DOM til å kjøre i IE5.5, uten innblanding fra IE4, må jeg unngå å bruke id-verdier som variabelnavn.

Avatar billede janegil Nybegynder
02. februar 2001 - 12:31 #8
<tbody> ER obligatorisk!

Har finlest http://www.w3.org/TR/html401/struct/tables.html#edef-TABLE.

Det viser seg at TBODY-elementet er obligatorisk, baåde i HTML og DOM. Men hvis tabellen bare har ett TBODY-element, kan taggene (<tbody> og </tbody>) utelates...

En annen sak er at jeg heller ikke har lov å legge TBODY inne et annet TBODY. Sp jeg må droppe planen om å bruke TBODY til å vise/skjule varierende detaljnivåer dynamisk.

Hverken IE eller Netscape gir javascript-feil når jeg legger TR ved siden av TBODY, og TBODY inne i TBODY – pokker ta dem, jeg vil gjerne ha feilmeldinger når jeg lager feil.

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