Hallo Oli,
um valides (X)HTML zu schreiben MUSS das script-Element im head-Element sein und darf nirgends anders auftauchen. Das hängt direkt mit den DTDs für die einzelnen (X)HTML-Varianten zusammen.
...
<script>
document.getElementById("text").style.border="1px solid red"
</script>
</head>
<body>
<p id="text">der Text</p>
...
Dieses Beispiel wäre valid, liefert aber kein Ergebnis, da ein Browser Dokumente Zeile für Zeile einliest und das script nach Einlesen des script-Elements sofort ausgeführt wird.
Zu diesem Zeitpunkt ist dem Browser das Element mit ID "text" noch nicht bekannt.
...
</head>
<body>
<p id="text">der Text</p>
<script>
document.getElementById("text").style.border="1px solid red"
</script>
...
Dieses wiederum ist nicht valid, liefert aber das erwünschte Ergebnis, da dem Browser das Element mit der ID "text" jetzt bekannt ist.
Darum ist <script> teilweise auch im <body> (de-)platziert.
Gruß aus Berlin!
eddi