Ergebnis 1 bis 6 von 6
  1. #1
    Al3x0r ist offline Grünschnabel
    registriert
    30-07-2006
    Beiträge
    4

    Funktion auf Array anwenden und auf Arrayelemente zugreifen

    Hallo,

    Ich habe ein Problem mit JS.

    Folgendes habe ich mir gebastelt um on the fly ne Rechnung auszugeben

    Code:
    <script type="text/javascript">
     function zaehler(){
       var WertA = document.form2.wert1.value;
       var WertB = document.form2.wert2.value;
       var WertC = document.form2.wert3.value;
    	 var WertD = document.form2.wert4.value;
       document.form2.flaeche.value=WertA*1 + WertB*1 + WertC*1 + WertD*1;
     }
    </script>
    Das funktioniert auch soweit. Mein Problem ist, dass ich diese Funktion auf

    Die Felder wert1[], wert2[] usw. anwendem will, also wert1, wert2, wert3, wert4 und flaeche sind jeweils ein Array.

    Ich dachte mir nun sowas

    Code:
    <input type='text' name='wert1[]' onKeyUp='zaehler();' />
    <input type='text' name='wert2[]' onKeyUp='zaehler();' />
    <input type='text' name='wert3[]' onKeyUp='zaehler();' />
    <input type='text' name='wert4[]' onKeyUp='zaehler();' />
    <input type='text' name='flaeche[]' onKeyUp='zaehler();' />
    und dann in JS

    Code:
    <script type="text/javascript">
     function zaehler(){
       var WertA = document.form2.wert1[].value;
       var WertB = document.form2.wert2[].value;
       var WertC = document.form2.wert3[].value;
    	 var WertD = document.form2.wert4[].value;
       document.form2.flaeche[].value=WertA*1 + WertB*1 + WertC*1 + WertD*1;
     }
    </script>
    das funzt allerdings nicht...

    Da ich eine Variable habe, die hochgezählt wird, dachte ich dann an sowas:

    Code:
    <input type='text' name='wert1[".$i."]' onKeyUp='zaehler(".$i.");' />
    <input type='text' name='wert2[".$i."]' onKeyUp='zaehler(".$i.");' />
    <input type='text' name='wert3[".$i."]' onKeyUp='zaehler(".$i.");' />
    <input type='text' name='wert4[".$i."]' onKeyUp='zaehler(".$i.");' />
    <input type='text' name='flaeche[".$i."]' onKeyUp='zaehler(".$i.");' />
    und dann in JS

    Code:
    <script type="text/javascript">
     function zaehler(id){
       var WertA = document.form2.wert1[id].value;
       var WertB = document.form2.wert2[id].value;
       var WertC = document.form2.wert3[id].value;
    	 var WertD = document.form2.wert4[id].value;
       document.form2.flaeche[id].value=WertA*1 + WertB*1 + WertC*1 + WertD*1;
     }
    </script>
    Das funzt allerdings auch nicht... Irgendwie raffe ich nicht so ganz wie das nun gehen soll und wäre sehr dankbar wenn mir jemand helfen würde. Ich sitze seit mitlerweile 4 Stunden an diesem banalen Problem, war schon mindestens 10 mal kurz davor eine Schere durch meinen TFT zu werfen oder sonstige Peripherie zu zerstören. Diverse Internetquellen liefern auch nur scheiße und ich bin mit meinem latein am Ende

    danke Alex

  2. #2
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Funktion auf Array anwenden und auf Arrayelemente zugreifen


  3. #3
    Al3x0r ist offline Grünschnabel
    registriert
    30-07-2006
    Beiträge
    4

    AW: Funktion auf Array anwenden und auf Arrayelemente zugreifen

    Ich liebe solche Posts und fasse mich manchmal auch so knapp, nun weiß ich wie beschissen sich die Leser fühlen müssen.


    Ich habe mal etwas weiter gebastelt:

    Code:
    <script type="text/javascript">
    function zaehler(id){
       var WertA = document.form2["wert1[id]"].value;
       var WertB = document.form2["wert2[id]"].value;
       var WertC = document.form2["wert3[id]"].value;
       var WertD = document.form2["wert4[id]"].value;
       document.form2["flaeche[id]"].value=WertA*1 + WertB*1 + WertC*1 + WertD*1;
    }
    </script>
    und das ist der HTML Teil:


    Code:
    <input type='text' name='wert1[".$B_z."]'  onKeyUp='zaehler(".$B_z.");' />
    <input type='text' name='wert2[".$B_z."]'  onKeyUp='zaehler(".$B_z.");' />
    <input type='text' name='wert3[".$B_z."]'  onKeyUp='zaehler(".$B_z.");' />
    <input type='text' name='wert4[".$B_z."]'  onKeyUp='zaehler(".$B_z.");' />
    <input type='text' name='flaeche[".$B_z."]'  onKeyUp='zaehler(".$B_z.");' />
    $B_z ist eine Variable, die in einer For schleife hochzählt.

    Mein Problem ist nun folgendes:

    Wenn ich das oben gezeigt Konstrukt aus 5 Input Feldern nur einmal brauchen würde, würde die Funktion funktionieren.

    Das sähe dann so aus:

    Code:
    <script type="text/javascript">
    function zaehler(){
       var WertA = document.form2.wert1.value;
       var WertB = document.form2.wert2.value;
       var WertC = document.form2.wert3.value;
       var WertD = document.form2.wert4.value;
       document.form2.flaeche.value=WertA*1 + WertB*1 + WertC*1 + WertD*1;
    }
    </script>
    +

    Code:
    <input type='text' name='wert1'  onKeyUp='zaehler();' />
    <input type='text' name='wert2'  onKeyUp='zaehler();' />
    <input type='text' name='wert3'  onKeyUp='zaehler();' />
    <input type='text' name='wert4'  onKeyUp='zaehler();' />
    <input type='text' name='flaeche'  onKeyUp='zaehler();' />
    und funzt astrein.

    Das Problem ist, dass wert1, wert2, wert3, wert4 und flaeche alle samt jeweils ein Array sind.

    Das heisst ich habe dann im Quellcode folgendes stehen:

    Code:
    <input type='text' name='wert1[0]'  onKeyUp='zaehler(0);' />
    <input type='text' name='wert2[0]'  onKeyUp='zaehler(0);' />
    <input type='text' name='wert3[0]'  onKeyUp='zaehler(0);' />
    <input type='text' name='wert4[0]'  onKeyUp='zaehler(0);' />
    <input type='text' name='flaeche[0]'  onKeyUp='zaehler(0);' />
    und JS:

    Code:
    <script type="text/javascript">
    function zaehler(id){
       var WertA = document.form2.wert1[id].value;
       var WertB = document.form2.wert2[id].value;
       var WertC = document.form2.wert3[id].value;
       var WertD = document.form2.wert4[id].value;
       document.form2.flaeche[id].value=WertA*1 + WertB*1 + WertC*1 + WertD*1;
    }
    
    
    Ich finde es so, wie ich es geschrieben habe absolut logisch, doch es funzt nicht. Vielleicht bin ich verwöhnt von PHP und JS ist einfach zu kompliziert oder so. Ich finde es nett, dass sich jemand die Mühe macht und sich diesen Thread anguckt , nur leider bringt mir das Posten eines einfachen Links nichts...
    
    mfg Alex
    </script>

  4. #4
    pit-r Guest

    AW: Funktion auf Array anwenden und auf Arrayelemente zugreifen

    Moin!
    Zitat Zitat von Al3x0r
    Ich liebe solche Posts und fasse mich manchmal auch so knapp, nun weiß ich wie beschissen sich die Leser fühlen müssen.
    Wieso? ein schlauer hat Dir die Lösung gepostet!

    Hier im Klartext und etwas kürzer:

    var WertA=document.form2['wert1['+id+']'].value;

    Ahoi - Pit

  5. #5
    Al3x0r ist offline Grünschnabel
    registriert
    30-07-2006
    Beiträge
    4

    AW: Funktion auf Array anwenden und auf Arrayelemente zugreifen

    Funktioniert perfekt, vielen herzlichen dank. Ich könnte mit dem Fachchinesisch aber ernsthaft nichts anfangen...

  6. #6
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Funktion auf Array anwenden und auf Arrayelemente zugreifen

    Zitat Zitat von Al3x0r Beitrag anzeigen
    Funktioniert perfekt, vielen herzlichen dank. Ich könnte mit dem Fachchinesisch aber ernsthaft nichts anfangen...
    Was für Fachchinesisch ?
    Mit dem Namen des Formulars und des Elements als Indexnamen (wie in Schema 4 / Beispiel 4)
    Diese Art ist eine zu Schema 3 äquivalente Schreibweise, denn in JavaScript ist das Ansprechen von Unterobjekten über objekt.unterobjekt gleichwertig zu objekt["unterobjekt"]. Geben Sie mit document.forms["Formularname"].elements["Elementname"] den Namen des Formulars und des Elements als String an. Diese Schreibweise wird insbesondere für den Zugriff auf Formularelemente benötigt, deren Namen Sonderzeichen enthalten, welche den Zugriff nach Schema 2 und 3 unmöglich machen. Sie können zwischen den eckigen Klammern auch eine String-Variable notieren, die den Formularnamen bzw. den Elementnamen enthält.
    Was ist daran nicht zu verstehen, vor allem nachdem du hier ellenlange Beispiele gezeigt hast, war mir nicht klar, dass du mit Begriffen wie Element, Objekt oder String nichts anfangen kannst.

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 16-02-2007, 01:12
  2. warum kommt hier undefined als ergebnis?
    Von Jemand im Forum JavaScript
    Antworten: 11
    Letzter Beitrag: 28-04-2004, 13:50
  3. PHP - Array: Dimensionen Vertauschen? PHP-Operation auf 2.Dim anwenden?
    Von Steve im Forum Serverseitige Programmierung
    Antworten: 3
    Letzter Beitrag: 18-09-2002, 18:12
  4. auf input => array zugreifen
    Von Daimonion im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 31-08-2002, 13:31
  5. Antworten: 3
    Letzter Beitrag: 21-07-2001, 10:53

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •