Antwort an „matze511“ verfassen

jetzt funktioniert es! so sieht das JavaScript jetzt aus:

Quelltext hierdocument.addEventListener('DOMContentLoaded', function () {
  const selectElement = document.getElementById('wasistgegeben');
  const config = {
    traufhöVordachNeigung: ["#grundmaß", "#traufhoehe", "#dachueberstand", "#dachneigung"],
    firsthöTraufhöVordach: ["#grundmaß", "#firsthoehe", "#traufhoehe", "#dachueberstand"],
    vordachNeigungOKFußpf: ["#grundmaß", "#okFußpfette", "#dachueberstand", "#dachneigung"],
    "--": [] // Default case
  };

  selectElement.addEventListener('change', function () {
    // Disable all fields initially
    const allFields = ["#grundmaß", "#traufhoehe", "#firsthoehe", "#dachueberstand", "#dachneigung", "#okFußpfette", "#okFirstpfette"];
    allFields.forEach(id => document.querySelector(id).setAttribute('disabled', 'disabled'));

    // Enable relevant fields
    const selectedOption = this.value;
    if (config[selectedOption]) {
      config[selectedOption].forEach(id => document.querySelector(id).removeAttribute('disabled'));
    }
  });

  document.querySelector('input[type="button"]').addEventListener('click', function () {
    BerechnungderSparrenmaße(selectElement.value);
  });
});


        function getFloatValue(id) {
            const element = document.getElementById(id);
            if (element) {
                const value = element.value.replace(",", ".");
                const floatValue = parseFloat(value);
                if (isNaN(floatValue)) {
                    console.error("Ungültiger Wert für " + id + ": " + value);
                    return 0;  // Rückgabe von 0, wenn der Wert ungültig ist
                }
                return floatValue;
            } else {
                console.error("Element nicht gefunden: " + id);
                return 0;
            }
}

function berechneLotrechtesObholz(sparrenhoehe, klauentiefe, dachneigung) {
    return (sparrenhoehe - klauentiefe) / Math.cos(dachneigung);
}



function BerechnungderSparrenmaße(selectedValue) {
  console.log("Berechnung gestartet für:", selectedValue);

  // Gemeinsame Variablen einlesen
  const grundmass = getFloatValue("grundmaß");
  const dachneigung = getFloatValue("dachneigung") / 180 * Math.PI;
  const dachueberstand = getFloatValue("dachueberstand");
  const traufhoehe = getFloatValue("traufhoehe");
  const fusspfettenruecksprung = getFloatValue("fußpfettenruecksprung");
  const raumhoeheRohbau = getFloatValue("raumhoeheRohbau");
  const sparrenhoehe = getFloatValue("sparrenhoehe");
  const klauentiefe = getFloatValue("klauentiefe");
  const firstpfettenbreite = getFloatValue("firstpfettenbreite");
  const firsthoehe = getFloatValue("firsthoehe");
  const okFusspfette = getFloatValue("okFußpfette");

  // Berechnungen je nach Auswahl
  switch (selectedValue) {
    case "traufhöVordachNeigung":
      const firsthoeheCalc = (grundmass + dachueberstand) * Math.tan(dachneigung) + traufhoehe;
      const lotrechtesObholz = berechneLotrechtesObholz(sparrenhoehe, klauentiefe, dachneigung);
      const okFusspfetteCalc = ((dachueberstand + fusspfettenruecksprung) * Math.tan(dachneigung)) - lotrechtesObholz + traufhoehe;
      const okFirstpfetteCalc = (grundmass - 0.5 * firstpfettenbreite + dachueberstand) * Math.tan(dachneigung) - lotrechtesObholz + traufhoehe;

      document.getElementById("firsthoehe").value = firsthoeheCalc.toFixed(3);
      document.getElementById("okFußpfette").value = okFusspfetteCalc.toFixed(3);
      document.getElementById("okFirstpfette").value = okFirstpfetteCalc.toFixed(3);
      break;

    case "firsthöTraufhöVordach":
      const dachneigungCalc = Math.atan((firsthoehe - traufhoehe) / (grundmass + dachueberstand));
      const lotrechtesObholz2 = berechneLotrechtesObholz(sparrenhoehe, klauentiefe, dachneigungCalc);
      const okFusspfette2 = ((dachueberstand + fusspfettenruecksprung) * Math.tan(dachneigungCalc)) - lotrechtesObholz2 + traufhoehe;
      const okFirstpfette2 = (grundmass - 0.5 * firstpfettenbreite + dachueberstand) * Math.tan(dachneigungCalc) - lotrechtesObholz2 + traufhoehe;

      document.getElementById("dachneigung").value = (dachneigungCalc * 180 / Math.PI).toFixed(2);
      document.getElementById("okFußpfette").value = okFusspfette2.toFixed(3);
      document.getElementById("okFirstpfette").value = okFirstpfette2.toFixed(3);
      break;

    // Weitere Fälle können analog hinzugefügt werden
    default:
      console.warn("Keine Berechnung für diesen Fall implementiert.");
  }
}
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen