Mehrere Formulare und ein Script

Leider schon mal erster Error:

Code:
TypeError: form is undefined
   

form.Darlehensbetrag.value = 0;

Woran kann es liegen?
 
Die Fehlermeldung klingt so, als würdest du Berechne() ohne den ersten Parameter aufrufen. Deswegen ist "form" auch "undefined".
 
Die Fehlermeldung klingt so, als würdest du Berechne() ohne den ersten Parameter aufrufen. Deswegen ist "form" auch "undefined".

Jo hab den Code vom ComFreek benutzt, was genau meinst du, "ohne den ersten Paramater" bin ne Niete in Javascript, bitte genauerer werden ComFreek ;)

So sieht mein (Input)-Button aus:
HTML:
<input class="rechner-button" onclick="Berechne(document.form1);" type="button" value="Berechnen" />
 
Nur kein Selbstmitleid, das hilft nicht.

Der Browser teilt dir mit, dass form, der erste Parameter von Bereche, "undefiend" ist. Nun müsste man wissen, wann eine Variable den Wert "undefined" enthält. Entweder hast du keinen Parameter an die Funktion weitergegeben oder der angegebene Parameter enthält selbst den Wert "undefined".

Da du anscheinend den ersten Parameter angibst, kommt man zum Schluss, dass document.form1 den Wert "undefined" enthält. Wieso solltest du auch per document.form1 auf das Formular mit "name=form1" zugreifen können?

Probiere mal document.forms["form1"] als ersten Parameter aus. Siehe auch: http://stackoverflow.com/questions/4715050/what-does-document-form-mean-in-javascript
 
mit
HTML:
<input class="rechner-button" onclick="Berechne(document.forms['form1']);" type="button" value="Berechnen" />
<input class="rechner-button" onclick="Berechne(document.forms['form2']);" type="button" value="Berechnen" />

habe ich das gleiche Problem.

PS: Was mir gerade auffällt, und was wahrscheinlich sehr wichtig ist:
Diese Error-Meldung kommt bereits beim Neu-Laden der Seite, also bevor ich auf diesen Button mit "Berechne()" klicken kann.

Bei Neu-laden der Seite kommt:
Code:
TypeError: form is undefined   
form.Darlehensbetrag.value = 0;

Wenn ich auf dieses Button mit "Berechne()" klicke kommt eine neue Error-Meldung:
Code:
TypeError: form is undefined   
if (form.VertragsbeginnTag.value<1 || form.VertragsbeginnTag.value>31) {
 
Zuletzt bearbeitet:
in der 20 Zeile kommt der erste fehler, noch vor dem Drücken der "Berechne()"-Buttons

Hier Ausschnitt:

Javascript:
function Dat_pruef(form) {
    if (form.VertragsbeginnTag.value<1 || form.VertragsbeginnTag.value>31) {
    alert("Bitte gültiges Beginndatum eingeben!T");
    form.VertragsbeginnTag.focus();
    return false;
    }
    if (form.VertragsbeginnMonat.value<1 || form.VertragsbeginnMonat.value>12) {
    alert("Bitte gültiges Beginndatum eingeben!M");
    form.VertragsbeginnMonat.focus();
    return false;
    }
    var jetzt = new Date();
    if (form.VertragsbeginnJahr.value<jetzt.getFullYear() || form.VertragsbeginnJahr.value>jetzt.getFullYear()+1) {
    alert("Bitte gültiges Beginndatum eingeben!J");
    form.VertragsbeginnJahr.focus();
    return false;
    }
}
function Del_Data(form) {
    form.Darlehensbetrag.value = 0;
    form.Laufzeit_sd.value = 0;
    form.Agio_sd.value = 0;
    form.QAus_sd.value = 0;
    form.GesZins_sd.value = 0;
    form.Zins_aus_sd.value = 0;
    form.GZins_sd.value = 0;
    form.MB_rd.value = 0;
    form.Gesamtbeitrag.value = 0;
......
......}

function Berechne(form) {
  var whatx = form.thetarif5.value;
  var darl = parseInt(form.Darlehensbetrag.value)
  if (form.Laufzeit_sd.value < 5 || form.Laufzeit_sd.value > 25) {
  alert("Bitte gültige Laufzeit eingeben! min.5 und max. 25 Jahre");
  form.Laufzeit_sd.focus();
  return false;
  }
  var lz_sd = parseInt(form.Laufzeit_sd.value);
  Dat_pruef()
  var BegTag = parseInt(form.VertragsbeginnTag.value);
  var BegMonat = parseInt(form.VertragsbeginnMonat.value);
  var BegJahr = parseInt(form.VertragsbeginnJahr.value);
  var BegDat = new Date(BegJahr, BegMonat - 1, BegTag);
  form.Ablaufdatum_SD.value = "31.12." + String(BegJahr + lz_sd);
  var dauer_sd = 0;
  if ((BegTag == 1) && (BegMonat == 1)) {
  dauer_sd = lz_sd;
  } else {
  dauer_sd = parseInt(lz_sd) + 1;
  }
  var Dat3112 = new Date(BegJahr, 11, 31);
  var ZinsTage = Math.round((Dat3112 - BegDat) / 86400000);
  var AusBegJahr = 0;
  if ((BegTag == 1) && (BegMonat == 1)) {
  AusBegJahr = darl / 100 * 8;
  } else {
  AusBegJahr = Math.round(darl / 36500 * 8 * ZinsTage);
  }
  var agio_sd = darl / 100 * 5
  var qaus_sd = darl / 100 * 2
  var ZinsQ1 = Math.min(AusBegJahr, qaus_sd);
  var geszins_sd = 0
  geszins_sd = qaus_sd * 4 * (dauer_sd - 1) + AusBegJahr;
  form.Agio_sd.value = agio_sd;
  form.QAus_sd.value = qaus_sd;
  form.GesZins_sd.value = geszins_sd;
  if (whatx == "Kombi_prebas_germ" || whatx == "Kombi_prebas_rus" || whatx == "Kombi_prebas_ltv" || whatx == "Kombi_prebas_franz") {
  form.Zins_aus_sd.value = parseInt(Math.round(qaus_sd / 3));
  form.GZins_sd.value = geszins_sd;
  } else {
  form.Zins_aus_sd.value = 0;
  form.GZins_sd.value = 0;
  }
  form.EEinz.value = parseInt(form.Darlehensbetrag.value);
  if (whatx == "Kombi_prebas_germ" || whatx == "Kombi_prebas_rus" || whatx == "Kombi_prebas_ltv" || whatx == "Kombi_prebas_franz") {
  form.EEinz.value = parseInt(form.Darlehensbetrag.value) + parseInt(form.EZ_rd.value);
  }
  form.mtl_Einz.value = form.MB_rd.value * 12 * form.Laufzeit_rd.value;
  form.Zins_ges.value = parseInt(form.GesZins_sd.value) + parseInt(form.GesZins_rd.value);
  form.Rueck_ges.value = parseInt(form.Zins_ges.value) + parseInt(form.mtl_Einz.value) + parseInt(form.EEinz.value);
  form.Werte_SD.value = String(BegJahr) + ";" + String(darl) + ";" + String(ZinsQ1) + ";" + String(AusBegJahr);
  for (var i = 1; i < 5; ++i)
  form.Werte_SD.value = form.Werte_SD.value + "#" + String(BegJahr + i) + ";;" + String(qaus_sd) + ";" + String(qaus_sd * 4);
  for (var i = 5; i < dauer_sd - 1; i = i + 5)
  form.Werte_SD.value = form.Werte_SD.value + "#" + String(BegJahr + i) + ";;" + String(qaus_sd) + ";" + String(qaus_sd * 4);
  form.Werte_SD.value = form.Werte_SD.value + "#" + String(BegJahr + dauer_sd - 1) + ";;" + String(qaus_sd) + ";" + String(qaus_sd * 4) + "#";
  form.Gesamtwerte_SD.value = "Gesamt" + ";" + String(darl) + ";;" + String(geszins_sd) + "#";
}
 
Ich sehe nirgends, wo Del_Data() aufgerufen wird.
Was sagt der Stack Trace in der Konsole?
 
Zuletzt bearbeitet:
HTML:
<input class="rechner-button" onclick="Del_Data(document.forms['form1']);" type="button" value="Eingabe löschen" />

Ist ein Button zum Löschen aller eingaben. Wird aber bei neu laden der Seite auch nicht betätigt.

Was ust Stackrace?o_O
 
Zurück