Struppi: Komplexe if-Bedingung

Beitrag lesen

Für eine Einschätzung wäre ich dankbar

Ich würde versuchen das massiv zu vereinfachen.

1. Die Formularreferenz wenn möglich schon bei Funktionsaufruf der Funktion übergeben:

<form ... onsubmit="return funktion(this);">

oder

<input type="submit" onclick="return funktion(this.form);">

Das spart dir dann schonmal eine Menge Tipparbeit.

function funktion(form)
{

}

und dann auch um die Lesbarkeit zu erhöhen, die einzelnen Bedingungen in Funktionen packen und sinnvoll benamen:

function checkDetailType1(form)
{
return  form.REGION.options[0].selected == true
&& form.PRODUCTLINE.options[0].selected == true
&& form.PROJECT_STATUS.options[0].selected == true
&& form.TIER.options[0].selected == true
&& form.APPLICATIONS.options[0].selected == true
&& form.PRODUCT_PROJECT.options[0].selected == true
&& form.OEM.options[0].selected == true
&& form.MISC.options[0].selected == true
&& form.REPORT_DETAIL_TYPE.value == 1;
}

function checkDetailType2(form)
{
return ((form.REGION.options[0].selected == true) &&
    (form.TIER.options[0].selected == true) &&
    (form.OEM.options[0].selected == true) &&
    (form.MISC.options[0].selected == true) &&
    (form.REPORT_DETAIL_TYPE.value == 2));

}

function checkDetailType2(form)
{
return  ((form.REGION.options[0].selected == true) &&
    (form.PRODUCTLINE.options[0].selected == true) &&
    (form.TIER.options[0].selected == true) &&
    (form.APPLICATIONS.options[0].selected == true) &&
    (form.PRODUCT_PROJECT.options[0].selected == true) &
    (form.options[0].selected == true) &&
    (form.options[0].selected == true) &&
    (form.REPORT_DETAIL_TYPE.value == 3))
}

und dann in deiner Hauptfunktion:

if( checkDetailType1(form) || checkDetailType2(form) || checkDetailType3(form) )
{
....
}

So liesse sich dein Programm auch leichter debuggen, da du die einzelnen Funktionen separat testen kannst.

Struppi.