@@Der Martin
Ein weiterer ist dein HTML, das invalide ist: title darf kein Kindelement von body sein, und ein script-Element darf meines Wissens kein Kind von html sein, sondern muss Kindelement von head oder body sein. Dasselbe gilt für das style-Element, das bei dir auch mitten im Wald steht.
Dein CSS ist ebenfalls fehlerhaft: Eine dimensionslose Zahl als Wert der width-Eigenschaft ist ungültig. Und ein Stylesheet am Ende des Dokuments zu notieren, ist zumindest bad practise.
Die Struktur sollte so aussehen (s.a. Tutorial Grundgerüst):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title>Random Number</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<style>
#number {
font-size: 90px;
}
#b {
width: 90px;
height: 55px;
}
</style>
</head>
<body>
<p id="number"></p>
<button id="b" onclick="random();">Get Number</button>
<script>
function random() {
document.getElementById("number").innerHTML = Math.floor(Math.random() * 100);
}
</script>
</body>
</html>
Daran gibt’s aber noch was zu verbessern:
-
Für Ausgaben gibt es das
output-Element:<p> <output id="number"></output> </p> -
Sprechende Bezeichner verwenden. Was ist
b? Wenn dubuttonmeinst, dann sag das auch. (Auf einer Seite mit mehreren Buttons wäre das ein denkbar schlechter Bezeichner, aber in deinem Fall mag er gehen.) -
Nicht
on…-Attribute verwenden, sondern EventListener imscriptregistrieren:<button id="button">Get Number</button> <script> document.getElementById("button").addEventListener("click", random); const outputElement = document.getElementById("number"); function random() { outputElement.textContent = Math.floor(Math.random() * 100); } </script> -
Das Ausgabe-Element nicht bei jedem Aufruf von
random()erneut im DOM suchen, sondern einmalig am Anfang und in einer Variablen ablegen. (Eben mit erledigt.) -
Aus Performance-Gründen immer die möglichst einfachste Methode wählen.
innerHTMList hier nicht notwendig;textContentist das Mittel der Wahl. (Eben mit erledigt.) -
Schriftgrößen nicht in
pxangeben, sondern als Vielfaches der Basis-Schriftgröße:#number { font-size: 6em; } -
Vorsicht beim Setzen fester Breiten bzw. Höhen! Du kannst nicht wissen, ob bei jeder Nutzerin[1] dieselbe Schriftart und -größe verwendet wird wie bei dir; d.h. ob der Text in die von dir angegeben Maße hineinpasst. Besser
min-width/min-heightverwenden. Und wie eben schon: nicht inpx.#button { min-width: 6em; min-height: 4em; }
😷 LLAP
“When I was 5 years old, my mother always told me that happiness was the key to life. When I went to school, they asked me what I wanted to be when I grew up. I wrote down ‘happy.’ They told me I didn’t understand the assignment, and I told them they didn’t understand life.” —John Lennon
Männliche Nutzerinnen sind mitgemeint. ↩︎