Hallo liebe Profis,
ich hab einen Fehler in der sel.onchange und komme einfach nicht weiter😒 könnte da mal bitte jemand drüber schauen? Ohne die switch funtioniert die Berechnung wunderbar, nur wollte ich verschiedene Berechnung nach Auswahl im dropdownmenue machen und da steh ich auf der stelle. Das ist das Menue:
<select name="wasistgegeben" value="wasistgegeben" id="wasistgegeben">
<option value="Bitte wählen" selected>Bitte wählen</option>
<option value="traufhöVordachNeigung">Grdmaß-Traufhö-Vordach-Neigung</option>
<option value="firsthöTraufhöVordach">Grdmaß-Firsthö-Traufhö-Vordach</option>
<option value="vordachNeigungOKFußpf">Grdmaß-Vordach-Neigung-OKFußpf</option>
</select>
und das dazugehörige JavaScript:
document.addEventListener('DOMContentLoaded', function () {
document.getElementById('wasistgegeben').addEventListener('change', function () {
const config = {
traufhöVordachNeigung: ["#grundmaß", "#traufhöhe", "#dachüberstand", "#dachneigung"],
firsthöTraufhöVordach: ["#grundmaß", "#firsthöhe", "#traufhöhe", "#dachüberstand"],
vordachNeigungOKFußpf: ["#grundmaß", "#okFußpfette", "#dachüberstand", "#dachneigung"],
"--": [] // Default case
};
// Disable all fields initially
const disableAll = ["#grundmaß", "#traufhöhe", "#firsthöhe", "#dachüberstand", "#dachneigung", "#okFußpfette", "#okFirstpfette"];
disableAll.forEach(id => document.querySelector(id).setAttribute('disabled', 'disabled'));
// Enable fields based on the selected value
const selectedOption = this.value; // Get selected value
if (config[selectedOption]) {
config[selectedOption].forEach(id => document.querySelector(id).removeAttribute('disabled'));
}
});
});
das Funktioniert alles soweit gut, nur die Berechnungen wollen nicht starten nach betätigen des Button.
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 () {
console.log("Berechnung läuft...");
let sel = document.getElementById("Werte berechnen"); // Beispiel
console.log(sel.value);
sel.onchange = function () {
console.log("Berechnung gestartet");
let grundmass = getFloatValue("grundmaß");
let dachneigung = getFloatValue("dachneigung") / 180 * Math.PI;
let dachueberstand = getFloatValue("dachüberstand");
let traufhoehe = getFloatValue("traufhöhe");
let fusspfettenruecksprung = getFloatValue("fußpfettenrücksprung");
let raumhoeheRohbau = getFloatValue("raumhöheRohbau");
let sparrenhoehe = getFloatValue("sparrenhöhe");
let klauentiefe = getFloatValue("klauentiefe");
let firstpfettenbreite = getFloatValue("firstpfettenbreite");
let firsthoehe = getFloatValue("firsthöhe");
let okFusspfette = getFloatValue("okFußpfette");
console.log("Gewählter Wert:", this.value); // Debug-Ausgabe
switch (this.value) {
case "traufhöVordachNeigung":
console.log("Fall: traufhöVordachNeigung");
let firsthoehe = (grundmass + dachueberstand) * Math.tan(dachneigung) + traufhoehe;
let lotrechtesObholz = berechneLotrechtesObholz(sparrenhoehe, klauentiefe, dachneigung);
let okFusspfette = ((dachueberstand + fusspfettenruecksprung) * Math.tan(dachneigung)) - lotrechtesObholz + traufhoehe;
let okFirstpfette = (grundmass - 0.5 * firstpfettenbreite + dachueberstand) * Math.tan(dachneigung) - lotrechtesObholz + traufhoehe;
document.getElementById("firsthöhe").value = firsthoehe.toPrecision(4);
document.getElementById("okFußpfette").value = okFusspfette.toPrecision(3);
document.getElementById("okFirstpfette").value = okFirstpfette.toPrecision(4);
break;
case "firsthöTraufhöVordach":
console.log("Fall: firsthöTraufhöVordach");
let dachneigung = Math.atan((firsthoehe - traufhoehe) / (grundmass + dachueberstand));
let lotrechtesObholz2 = berechneLotrechtesObholz(sparrenhoehe, klauentiefe, dachneigung);
let okFusspfette2 = ((dachueberstand + fusspfettenruecksprung) * Math.tan(dachneigung2)) - lotrechtesObholz2 + traufhoehe;
let okFirstpfette2 = (grundmass - 0.5 * firstpfettenbreite + dachueberstand) * Math.tan(dachneigung2) - lotrechtesObholz2 + traufhoehe;
document.getElementById("dachneigung").value = (dachneigung2 * 180 / Math.PI).toPrecision(4);
document.getElementById("okFußpfette").value = okFusspfette2.toPrecision(4);
document.getElementById("okFirstpfette").value = okFirstpfette2.toPrecision(4);
break;
case "vordachNeigungOKFußpf":
console.log("Fall: vordachNeigungOKFußpf");
let okFusspfette3 = getFloatValue("okFußpfette");
let lotrechtesObholz3 = berechneLotrechtesObholz(sparrenhoehe, klauentiefe, dachneigung);
let firsthoehe3 = (grundmass - fusspfettenruecksprung) * Math.tan(dachneigung) + okFusspfette3 + lotrechtesObholz3;
let traufhoehe3 = okFusspfette3 + lotrechtesObholz3 - ((dachueberstand + fusspfettenruecksprung) * Math.tan(dachneigung));
let okFirstpfette3 = (grundmass - 0.5 * firstpfettenbreite + dachueberstand) * Math.tan(dachneigung) - lotrechtesObholz3 + traufhoehe3;
document.getElementById("firsthöhe").value = firsthoehe3.toPrecision(4);
document.getElementById("traufhöhe").value = traufhoehe3.toPrecision(4);
document.getElementById("okFirstpfette").value = okFirstpfette3.toPrecision(4);
break;
default:
console.error("Ungültige Auswahl");
}
}
}
könnte mir da bitte jemand helfen?
LG matze