Avatar billede nadia_tv Nybegynder
03. januar 2006 - 23:00 Der er 5 kommentarer

forvirring omkring DOM og varibaler

sad og læste om dokument modellen ( DOM ) og der er der for det første 3 typer ... øhh... bruges alle 3 stadigvæk eller er det kun for gamle systemer

så stod der også at DOM havde betydning for for variabler og typer...

nogen der lige kan hjælpe?
Avatar billede roenving Novice
03. januar 2006 - 23:05 #1
Hvor og hvad læste du ?-)
Avatar billede nadia_tv Nybegynder
03. januar 2006 - 23:17 #2
jo det var en længere toturial på engelsk

der stod at der var en document object model som microsoft havde lavet, en som netscape havde lavet og en som W3 havde lavet. den sidste var standard..
men betyder det at de 2 andre også bruges og feks har ting i sig som ikke er standard og kun vises i MS browser ?

og så stod der at document object modellen havde betydning for hvilke variabler og variable typer der kunne bruges med dem...

så jeg er meget forvirret
Avatar billede roenving Novice
03. januar 2006 - 23:41 #3
Det første er fuldstændig rigtigt ...

I f.eks. IE4+ DOM findes et objekt (som det ovenikøbet kan tillades at udelade !-), der hedder document.all og indbefatter _alle_ elementer i et dokument, man kan faktisk hente den som collection og bladre igennem, hvis man skulle have lyst (hvilket man næppe vil have !-)

-- men det giver nogle underligheder, som kan gøre det næsten umuligt at gennemskue fejl ...

Hvis man f.eks. har en form med nogle elementer:

<form name="form1">
<input name="input1">
<input id="input2" name="input2">
</form>

-- så kan man i alle tre modeller (men ikke i xhtml !-) få fat i de to inputs med:

document.forms["form1"].input1/2;

-- og den anden input med:

document.getElementById("input2");

-- mens kun IE tillader

document.getElementById("input1"); hvilket jo også dybest set er noget vrøvl, da der jo ikke er noget id ...

-- desuden tillader IE en kort-form:

input2 !-)

-- hvilket betyder, at man f.eks. kan sende elementet til en funktion sådan i IE:

lavNoget(input2);, hvor de to andre kræver en af de ovenstående metoder, altså f.eks. lavNoget(document.getElementById("input2"));

-- i de gamle Netscape (3-4) var der så også den mærkværdighed, at style-properties var properties direkte på elementet, hvor de nu er properties på style-propertyen:

NS4.x: document.getElementById("input2").fontSize = "small";

Nutidige browsere: document.getElementById("input2").style.fontSize = "medium";

-- men nu kommer der så en helt ny virkelighed, for under xhtml kan man ikke længere bruge de globale collections på document: forms, images, links m.v., hvorfor man skal vænne sig til at bruge de rene w3 DOM-metoder, som bl.a. også betyder, at man skal oprette og adressere elementer strengt DOM-agtigt, så innerHTML f.eks. er ubrugelig ...

-- som du måske kan få en fornemmelse af, er det i virkeligheden en meget større historie, som jeg heller ikke er i stand til at gennemgå fuldt ud ...

-- men for at få en ide om det, kan du jo prøve følgende HTML4-javascript i de browsere, du normalt kommer rundt i:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Element-property-checker</title>
<style type="text/css">table{border-collapse:collapse;}td{padding-right:5px;border:0px;border-bottom:1px solid black;}</style>
</head>
<body>
<select name="test2">
    <option value="xx">xx</option>
    <option value="xxx">xxx</option>
</select>
<a STYLE="background:transparent;color:#246374;">tekst</a>
<img src="../billede.jpg" width="100" height="100" name="fisk" style="filter:alpha(opacity=60);-moz-opacity:0.6;" onMouseOver="startOpChange(this,100,1);" onMouseOut="startOpChange(this,60,1);">
<table>
<script type="text/javascript">
var n = new Array();
//document.write("<pre>");
z=document;
for(x in z) {
if(x != 'domConfig')
n[n.length] = x+"</td><td>"+z[x]+"</td></tr>";
}
n.sort();
for(i=0;n.length>i;i++){
document.writeln("<tr><td>document."+n[i]);
}
//document.write("</pre>");
alert(n.length);
</script></table></body></html>
Avatar billede nadia_tv Nybegynder
03. januar 2006 - 23:49 #4
ja ok - så giver det meste jo lige pludselig mening.
jeg siger mange tak for forklaringen

en ting som jeg dog slet ikke forstår er DOM og dens rolle for variabler og variable typer...

jo <img> skal have en name atribut mens resten skal bruge en ID for DOM at kunne refere til dem - men har DOM en betydning for hvilke variabler der bruges ?

for såe... nej jeg forstår simpel hen ikke - xhtml ændre jo på tingene så - eller er jeg helt ved siden af :)
Avatar billede roenving Novice
04. januar 2006 - 00:12 #5
xhtml kræver streng xml-agtig behandling af elementerne ...

-- og <img>-tags behøver ikke navne i nogen DOM, men i html-DOM findes en collection af images, som kan adresseres via name-attributten, ligesom f.eks. forms og frames kan findes på den måde !o]

-- så grundlæggende bør man gå over til at bruge id til at adressere _alle_ elmenter, bortset fra form-elementer, der skal aflæses server-side (eller rettere, man skal bruge både id og name !-)

-- selve variablerne og variabel-typerne kan jeg kun finde i forhold til de omtalte collections og f.eks. ovennævnte IE-objekt input2, som direkte er et objekt i IE-DOM, mens det slet ikke findes i de fleste andre DOMs, men må findes f.eks. med .getElementById('input2'), hvor 'input2' altså bare er en almindelig tekststreng ...
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