Robert B.: Slider to JS variable

Beitrag lesen

Moin Alois,

<!DOCTYPE html>
<html>

Das Gradzeichen ° ist außerhalb des ASCII-Zeichensatzes, weshalb es sinnvoll sein kann, im head die Codierung deines Dokuments anzugeben. Default ist in HTML ISO-8859-1.

<body>

<h2>Slider to JS-Var</h2>

<label id=Xout></label><label id=Xout2></label>

Die Hauptüberschrift eines Dokuments sollte immer h1 sein und label ohne zugeordnete Formularelemente wirken auf mich falsch (siehe auch https://wiki.selfhtml.org/wiki/HTML/Elemente/label).

<br><br><br>

Zeilenumbrüche sind keine Spacing-Elemente.

    <strong>

Das strong hat kein End-Tag und umschließt auch das Input.

    <lable>Fußpunkt:</lable>
    <lable><input type="range" id="fpIn" min="-20" max="0"  value="-12"><span>0</span></lable>
  	<label> °C</lable>

Das Element heißt label und nicht lable und beschreibt das Formularelement – so wie Rolf vorgeschlagen hat – oder in der Form

<label>Fußpunkt:
    <input type="range" id="fpIn" min="-20" max="0" value="-12">
    <output aria-hidden="true"></output>&#x202f;°C
</label>

Das Zeichen mit dem Unicode-Point 202f ist ein schmales geschütztes Leerzeichen, wie es zwischen Zahlen und Einheiten verwendet wird.

const  strOut=[];

  var sliderFp = document.querySelector("input[type='range'][id='fpIn']");

Das Objekt kann doch auch const sein – und es wird ziemlich kompliziert ermittelt: "#fpIn" sollte vollkommen ausreichen, da die ID eindeutig sein muss, es darf also keine weiteren Elemente mit dieser ID geben.

  sliderFp.addEventListener("change", function(){
    document.querySelector("span").innerHTML = this.value;
    strOut[0]=this.value;
    document.getElementById("test1").innerHTML=strOut[0];
    });

Neben dem change-Event träfe auch das input-Event zu. Aber das eigentliche Problem an der Stelle ist, dass es kein Element mit der ID test1 gibt. (Und getElementById kannst du natürlich auch anstelle von querySelector("#…") verwenden.)

  document.getElementById("Xout").innerHTML=">>> ";
  document.getElementById("Xout2").innerHTML=strOut[0];

Das steht außerhalb des Event-Handlers, wird also nur einmal beim Abarbeiten des JavaScript-Codes ausgeführt. Und nach meinem Verständnis sollte man innerHTML gültigen HTML-Code zuweisen, dafür müsstest du doch die spitzen Klammern kontextgerecht behandeln. Aber in deinem Fall reichte auch die textContent-Eigenschaft vollkommen aus.

Viele Grüße
Robert