JS - Wie kann ich die Höhe eines Rechtecks mit einem Schieberegler / Slider (range) im Canvas vergrößern und verkleinern?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

1) Der Doctype (in der ersten Zeile, vor dem öffnenden html-Tag) fehlt.

<!doctype html>

2) Alle Seitenelemente gehören ausnahmlos in den body-Bereich. Das wären in deinem Fall die Elemente br, input, p, hr. Das script-Element wiederum darf nur im head- oder body-Bereich stehen.

Verschiebe den schließenden body-Tag also hinter dein schließendes script-Tag.

3) Beim Namen des öffnenden html-Tag hast du die Zeichen verdreht.

4) Auf deiner Zeichenfläche wird nur ein einziges Mal gezeichnet und daher verändert sich da nachträglich auch nichts mehr.

Deine Funktion aendereRadius müsste folgendermaßen angepasst werden:

function aendereRadius() {
  output.innerText = slider.value;
  console.log(output.innerText);

  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.fillRect(50, 50, 50, slider.value);
}

Das Prinzip ist ständiges Übermalen. Mit clearRect wird die Zeichenfläche zuvor geleert, damit vorherige Zeichenvorgänge nicht stören und es somit so scheint, als würde sich ein- und dasselbe Rechteck bei Bewegung des Sliders nur in seiner Größe anpassen.

Du siehst hier auch, dass ich innerHTML gegen innerText ausgetauscht habe. So lange du nicht wirklich HTML in ein Element einfügst, ist der Einsatz dieses Properties nämlich nur Overhead. Als Argument für fillRect hat so ein Ausdruck sogar direktes Fehlerpotenzial, denn stände dann einmal wirklich HTML in diesem Element, würde JavaScript bei seiner impliziten Konversion des Strings zu einer Zahl nicht mehr das produzieren, was du dir vorstellst.

USERUn556 
Fragesteller
 24.08.2021, 17:09

Vielen Dank, für deine ausführliche Erklärung <3

0

Bei der Deklaration von slider und in der Zeile

slider.addEventListener('input', aendereRadius, false)

fehlt jeweils das Semikolon am Ende der Zeile. Javascript nimmt es da sehr genau...

Versuche mal, für die id der Canvas einen anderen Namen (z.B. canv oder so) zu nehmen. Bin mir nicht sicher, aber daran könnte es auch liegen.

codinghelp  23.08.2021, 21:18

JavaScript braucht keine Semikolons... Die am Ende sind optional

So viel zu "JS nimmt es da sehr genau"

0
Gegsoft  23.08.2021, 21:20
@codinghelp

Hast du es mal mit Semikolon versucht? Ein „überflüssiges” optionales Semikolon kann ja nicht schaden.

0
codinghelp  23.08.2021, 21:20
@Gegsoft

Ich bin nicht der Fragesteller, aber daran liegt es wie gesagt nicht ;)

0
USERUn556 
Fragesteller
 23.08.2021, 21:55

funktioniert leider immer noch nicht

0