Volker: Code vereinfachen

Hi,

wie kann ich diesen langen Javascript-Code am Besten verkürzen? Wahrscheinlich indem ich this als Funktionsparameter übergebe? Aber wie?

Die einzigste Vereinfachung die mir gerade einfällt wäre, dass ich dann statt "document.getElementById("ipOpt2")" "document.getElementById(this)" schreiben könnte.

Vielleicht habt ihr noch ein paar Ratschläge an mich, das wäre super!

  
function ipconfig(value)  
{  
  if(value)  
  {  
  
   if(document.getElementById("ipOpt2").value=="dhcp")  
   {  
        document.myform.ip2.disabled = document.myform.sub2.disabled = document.myform.gate2.disabled = true;  
   }  
   else if(document.getElementById("ipOpt2").value=="dflt-ip")  
   {  
  
        document.myform.ip2.disabled = document.myform.sub2.disabled = document.myform.gate2.disabled = false;  
   }  
  
} else {  
  
   if(document.getElementById("ipOpt1").value=="dhcp")  
   {  
        document.myform.ip1.disabled = document.myform.sub1.disabled = document.myform.gate1.disabled = true;  
   }  
   else if(document.getElementById("ipOpt1").value=="dflt-ip")  
   {  
    document.myform.ip1.disabled = document.myform.sub1.disabled = document.myform.gate1.disabled = false;  
    }  
}  
}  

  
<select class="form-select2" id="ipOpt1" name="ipOpt1" onChange="ipconfig(0)">  
<option value="dhcp">DHCP</option>  
<option value="dflt-ip">Dflt-IP</option>  
</select>  
  
  
<select class="form-select2" id="ipOpt2" name="ipOpt2" onChange="ipconfig(1)">  
<option value="dhcp">DHCP</option>  
<option value="dflt-ip">Dflt-IP</option>  
</select>  

Gruß
Volker

  1. Hi,

    wie kann ich diesen langen Javascript-Code am Besten verkürzen? Wahrscheinlich indem ich this als Funktionsparameter übergebe? Aber wie?

    Die einzigste Vereinfachung die mir gerade einfällt wäre, dass ich dann statt "document.getElementById("ipOpt2")" "document.getElementById(this)" schreiben könnte.

    Wohl kaum

    Wenn dein Aufruf z.B. lautet

    <someelement  somehandler="somefunc(this,'someotherpar')"  someprop="" />

    so steht das aufrufende Element in der Funktion zur Verfügung

    function somefunc(elem, somepar){
      /* manipuliere Eigenschaften des aufrufenden Elements */
      elem.someprop="somevalue";
    }

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
  2. Hi, Volker!

    Eine weitere Verkürzung ist noch machbar, wenn Du berücksichtigst, dass ja disabled nur dann true sein soll, wenn der Wert "dhcp" gewählt ist. In diesem Fall kannst Du die if-Schleife in die verkürzte Form bringen, d.h. statt:

       if(document.getElementById("ipOpt2").value=="dhcp")  
       {  
            document.myform.ip2.disabled = document.myform.sub2.disabled = document.myform.gate2.disabled = true;  
       }  
       else if(document.getElementById("ipOpt2").value=="dflt-ip")  
       {  
            document.myform.ip2.disabled = document.myform.sub2.disabled = document.myform.gate2.disabled = false;  
       }
    

    schreibst Du einfach

    document.myform.ip2.disabled = document.myform.sub2.disabled = document.myform.gate2.disabled = document.getElementById("ipOpt2").value=="dhcp";

    und ersparst Dir unnötigen Code und eine zusätzliche Abfrage.

    Gruß, LX

    --
    RFC 1925, Satz 2: Egal, wie fest man schiebt, ganz gleich, wie hoch die Priorität ist, man kann die Lichtgeschwindigkeit nicht erhöhen.