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.");
}
}