Gunnar Bittersmann: JS - Variablen in HTML mehrfach belegen, mit einer Funktion auswerten

Beitrag lesen

@@Ammeres

Ich habe deinen Code mal als solchen formatiert. Bitte das nächste Mal selber machen – ``` davor und danach im Markdown oder einfach mit dem </>-Button überm Eingabefeld.

function Sichtbarkeit() {
if (WertIst == WertSoll)
document.getElementByClass("EinAusblenden").removeAttribute "hidden"
else
document.getElementByClass("EinAusblenden").setAttribute "hidden"
}

Das kann aus mehreren Gründen nicht funktionieren. Die schon angesprochenen fehlenden Klammern sind nur einer davon.

Die Methode setAttribute() erwartet zwei Parameter: Name und Wert des Attributs. Um ein boolesches Attribut zu setzen, wäre als Wert der Leerstring anzugeben.

Viel einfacher ist aber, die hidden-Eigenschaft zu verwenden:

function Sichtbarkeit() {
  if (WertIst == WertSoll)
    document.getElementByClass("EinAusblenden").hidden = false;
  else
    document.getElementByClass("EinAusblenden").hidden = true;
}

Und noch viel einfacher: die if-Abfrage entsorgen. Die brauchst du nicht, weil du als Wert ja genau die Negation der Bedingung zuweisen willst:

function Sichtbarkeit() {
  document.getElementByClass("EinAusblenden").hidden = (WertIst != WertSoll);
}

Jetzt wirst du darüber stolpern, dass es keine Methode getElementByClass() gibt. Es gibt getElementsByClassName() – beachte den Plural!

Was willst du: genau ein Element ansprechen oder mehrere?

😷 LLAP

PS: Wenn die Funktion Sichtbarkeit() nur noch aus einem Einzeiler besteht, dann macht es vermutlich wenig Sinn, diesen in einer Funktion zu kapseln.

--
„Dann ist ja auch schrecklich, dass wir in einem Land leben, in dem nicht nur Bildungswillige leben, sondern auch hinreichende Zahlen von Bekloppten. Das darf ich so locker formulieren, ich bin ja jetzt Rentner und muss nicht mehr auf jedes Wort achten.“
— Joachim Gauck über Impfgegner