<ole>
setAttribute skal man passe lidt på, for den virker ikke altid, som nogle måske kunne forvente =)
Der er faktisk forskel på at sætte en attribut et HTML-element - og så at sætte en property på det JavaScript object, HTML-elementet implementerer.
Historisk har style objektet været et object på JavaScript objektet - og kunne derfor ikke sættes med
setAttribute. Den sidste browser, der lavede det om, var IE ... i version 8. Skal IE7 supporteres, skal der altså bruges syntaksen:
ELEMENT.style.fontSize = "30px";
Et andet eksempel er
value attributten/property'en. Den er en property på elementets style object, og brugerændringer i feltets indhold kan
ikke aflæses med
getAttribute[/i].
Aflæser man value attributten, skal det, som udvikleren skrev i HTML-koden, returneres - ikke elementets aktuelle værdi. Værdien skal aflæses med dot notation.
Af mange grunde - men bl.a. af denne - skal man passe rigtig godt på med brugen af [b]innerHTML. Prøv f.eks. denne kode og se, hvad der sker, når man skriver noget nyt i feltet og trykker på knappen:
<script type="text/javascript">
function foo() {
var str = "<p>En ekstra tekst indskrevet med innerHTML</p>";
document.getElementById("bar").innerHTML += str;
}
</script>
<div id="bar">
<input name="fooBar" value="Skriv noget ...">
</div>
<button onclick="foo()">TEST</button>
Uanset, hvad du har skrevet i feltet, vil der stå "Skriv noget ...", efter du har trykket på knappen.
Det skyldes, at DIV'ets
innerHTML bliver aflæst. Dernæst bliver den overskrevet med den aflæste
innerHTML - plus et ekstra P element. Sagen er, at når
innerHTML'en aflæses, så aflæses INPUT elementets
value attribut - ikke JS-objektets
value property.
Derudover går XHTML ikke særlig godt i spænd med
innerHTML - og
document.write er helt utænkelig. Med mindre, man bruger XML blandet ind i HTML-koden, er der ingen fornuftig grund til at bruge XHTML1.0 eller XHTML1.1. Da W3C endvidere droppede standarden for flere år siden, er der næppe den store fremtid i dén standard.
XHTML1.0 Transitional var som de andre af W3C's Transitional flavors kun ment som en kort overgangs-/øveversion, som burde have været udfaset for mindst 10 år siden. IE har aldrig understøttet XHTML1.1, men vil i stedet tilbyde brugeren at downloade siden =)
/mvh
</bole>