Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
22
ZUGRIFFE
2025
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #1
    darkpriest ist offline Mitglied Bronze
    Registriert seit
    Jul 2007
    Beiträge
    30
    Hallo ins Forum,

    ich möchte für ein Kalkulationsschema Werte aus einem Formular entnehmen. Diese Variante möchte ich nun vereinfachen, leider habe ich dabei folgendes Problem:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
     
    frm=document.form1;
     
    var variablen = new Array("neuwagenlpnettoid"); // hier sollen noch mehr werte rein
     
     
     
    for (var i = 0; i < variablen.length; i++) {
     
    var document.forms["form1"].elements[variablen[i]].id = (document.forms["form1"].elements[variablen[i]].value.replace(",", ".")); 
     
    }

    In dem Array "Variablen" möchte ich alle Werte reinschreiben, die ausgelesen werden sollen und die Zahlen umgewandelt! Leider bekomme ich immer wieder die Fehlermeldung "Objekt erwartet".

    Kann ich diese Zeilen überhaupt so erstellen?

    Wäre für jeden Tipp sehr dankbar!

    Darkpriest
     

  2. #2
    Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.559
    Hi,

    anhand deines Codeschnipsels ist nicht zu erkennen, woran der Fehler liegen könnte. Folgendes Konstrukt funktioniert bei mir problemlos:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    <html>
    <head>
    <meta name="author" content="Quaese">
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script type="text/javascript">
        <!--
    frm=document.form1;
    var variablen = new Array("neuwagenlpnettoid"); // hier sollen noch mehr werte rein
     
    function theFunc(){
      for (var i=0; i < variablen.length; i++) {
        document.forms["form1"].elements[variablen[i]].id = document.forms["form1"].elements[variablen[i]].value.replace(/,/g, ".");
        alert(document.forms["form1"].elements[variablen[i]].id);
      }
    }
        //-->
    </script>
    </head>
    <body>
    <form name="form1">
        <input type="text" name="neuwagenlpnettoid" value="1,234">
      <button onclick="theFunc()">theFunc()</button>
    </form>
    </body>
    </html>
    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Mediation[-exklusiv]
    Supervision im Konfliktmanagent D P

    New kind to realize large scalable projects with jQuery: jQuery SDK

  3. #3
    darkpriest ist offline Mitglied Bronze
    Registriert seit
    Jul 2007
    Beiträge
    30
    Hallo,

    erstmal danke für deine Antwort!

    Leider bringe ich meine Funktion nicht zum Laufen! Wahrscheinlich ist da ein Denkfehler von mir drin!

    Zur Erklärung: Ich habe ein größerers Formular, in dem mehrere Berechnungen mit Javascript erfolgen sollen! Ich benötige dazu ca. 30 Felder, die ich in der zuerst aufgerufenen Funktion wie folgt einfüge:

    Code :
    1
    2
    3
    
    var neuwagenlpnettoid               = frm.neuwagenlpnettoid.value.replace(",", ".");
     
    usw.

    Dann erfolgen meine Berechnung und dann gebe ich die Werte wieder mit

    Code :
    1
    
    frm.neuwagenlpnettoid.value         = (Number(neuwagenlpnettoid)).toFixed(2).replace(".", ",");

    zurück an das Formular!

    Das oben angeführte Feld kommt aber auch noch in 2 anderen Funktionen vor, die aber erst beim ändern von Feldern aufgerufen werden! Wie und vorallem wo muß ich die Felder definieren?

    Meine jetzige Funktion funktioniert zwar, benötigt aber viel sich wiederholenden Quelltext, dies wollte ich mit Hilfe von Arrays vermeiden! Aber irgendwie will es nicht! Ich bekomme entweder die Meldung "Objekt erwartet" oder "document.forms.form1.elements ist Null oder kein Objekt"!

    Habe ich einen strukturellen Fehler in meinem Script? Hat jemand einen Vorschlag, wie man das einfacher und sauberer lösen kann, anstatt den selben Quelltext, 30 mal aufzuführen?

    Wäre für jede Hilfe sehr dankbar!

    Vielen Dank!

    Darkpriest
     

  4. #4
    deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.731
    Hi.
    Zitat Zitat von darkpriest Beitrag anzeigen
    Das oben angeführte Feld kommt aber auch noch in 2 anderen Funktionen vor, die aber erst beim ändern von Feldern aufgerufen werden! Wie und vorallem wo muß ich die Felder definieren?
    Wenn du die Felder in verschiedenen Funktionen brauchst, dann solltest du sie global definieren.
    Zitat Zitat von darkpriest Beitrag anzeigen
    Meine jetzige Funktion funktioniert zwar, benötigt aber viel sich wiederholenden Quelltext, dies wollte ich mit Hilfe von Arrays vermeiden! Aber irgendwie will es nicht! Ich bekomme entweder die Meldung "Objekt erwartet" oder "document.forms.form1.elements ist Null oder kein Objekt"!
    Anscheinend gibt es kein Forumular auf deiner Seite mit dem Namen "form1". Kann es sein, das du evtl. diese Funktion schon aufrufst, bevor die Seite vollständig geladen ist?

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  5. #5
    darkpriest ist offline Mitglied Bronze
    Registriert seit
    Jul 2007
    Beiträge
    30
    Hallo,

    danke für deine Antwort!

    Ich rufe die Funktion auf, bevor das eigentliche Formular geladen wird. Dies habe ich darum gemacht, damit immer sofort alles berechnet wird!

    Wie kann ich denn dieses Problem umgehen bzw. wie macht man das dann?

    Vielen Dank!

    Darkpriest
     

  6. #6
    deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.731
    Hi.
    Zitat Zitat von darkpriest Beitrag anzeigen
    Ich rufe die Funktion auf, bevor das eigentliche Formular geladen wird. Dies habe ich darum gemacht, damit immer sofort alles berechnet wird!

    Wie kann ich denn dieses Problem umgehen bzw. wie macht man das dann?
    Man würde die Funktion erst aufrufen wenn die Seite und somit auch die form geladen ist, also in der window.onload Funktion.

    Zeig doch mal den kompletten HTML Code deiner Seite, sonst ist das mehr oder weniger ein Herumraten.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  7. #7
    darkpriest ist offline Mitglied Bronze
    Registriert seit
    Jul 2007
    Beiträge
    30
    Hallo,

    ich mache folgenden Aufruf:

    Code :
    1
    2
    3
    4
    
     
    </head>
     
    <body onLoad="formular(<?php echo $formular; ?>); gw(<?php echo $gwhereinin; ?>); doLiveRes(<?php echo $kalkschema; ?>); ausgabe()"  >

    Der Javascript Funktion doLiveRes muß ich einen PHP-Paramter übergeben. Ich habe dieses Event verwendet, damit beim Öffnen die Berechnung sofort durchgeführt wird.

    Das Formular:

    Code :
    1
    
    <form style="width:800px;" action=" <?php print $_SERVER['PHP_SELF'] . "?" . "id=" . $id; ?>" method="post" id="Verwaltungsunterlage" name="form1" >

    Code :
    1
    
    <label id="neuwagenlpnettobez" for="name" class="info" >Neuwagen Listenpreis netto</label><input type="text" id="neuwagenlpnettoid" name="kalk[neuwagenlpnettoin]" value="0,00" class="infofield" tabindex="" onBlur="doLiveRes(); leave(this)" onFocus="enter(this)"  ></input>

    Meine Javascript - Datei schaut nun so aus:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    
    var provsys;
    var kalk;
    var systemnw;
    var systemgw;
    var frm=document.form1;
     
     
    function donachlass(test){
     
    frm=document.form1;
     
    neuwagenlpnettoid                           = frm.neuwagenlpnettoid.value.replace(",", ".");
    nachlassinprozentid                         = frm.nachlassinprozentid.value.replace(",", ".");
    nachlassid                                  = frm.nachlassid.value.replace(",", ".");
     
    nachlassid                                  = neuwagenlpnettoid / 100 * nachlassinprozentid;
     
    frm.nachlassid.value                        = nachlassid.toFixed(2).replace(".", ",");
     
    doLiveRes()
     
    }
     
    function zuschuss(wert){
     
    sonderpraemieid = frm.sonderpraemieid.value.replace(",", ".");
     
    if (sonderpraemieid <= 10) {
     
    frm=document.form1;
     
     
    neuwagenlpnettoid = frm.neuwagenlpnettoid.value.replace(",", ".");
     
     
    sonderpraemieid = neuwagenlpnettoid / 100 * sonderpraemieid;
     
    frm.sonderpraemieid.value = sonderpraemieid.toFixed(2).replace(".", ",");
     
    doLiveRes()
     
    }
     
    }
     
     
     
    function doprozent(test){
     
    frm=document.form1;
     
    neuwagenlpnettoid = frm.neuwagenlpnettoid.value.replace(",", ".");
    nachlassinprozentid = frm.nachlassinprozentid.value.replace(",", ".");
    nachlassid = frm.nachlassid.value.replace(",", ".");
     
     
    nachlassinprozentid = nachlassid*100 / neuwagenlpnettoid;
     
    frm.nachlassinprozentid.value = nachlassinprozentid.toFixed(3).replace(".", ",");
     
    doLiveRes()
     
    }
     
     
    function doLiveRes(){
     
    frm=document.form1;
     
     
    var neuwagenlpnettoid               = frm.neuwagenlpnettoid.value.replace(",", ".");
    //alert(neuwagenlpnettoid);
     
    var verkaufspreisid                 = frm.verkaufspreisid.value.replace(",", ".");  
    var nachlassinprozentid             = frm.nachlassinprozentid.value.replace(",", ".");
    var nachlassid                      = frm.nachlassid.value.replace(",", ".");
    var verkaufspreisid                 = frm.verkaufspreisid.value.replace(",", ".");
    var mindestverkaufspreisid          = frm.mindestverkaufspreisid.value.replace(",", ".");
    var bankid                          = frm.bankid.value.replace(",", ".");
     
    var inzpraemieid                    =frm.inzpraemieid.value.replace(",", ".");
    var retpraemieid                    =frm.retpraemieid.value.replace(",", ".");
    var erpraemieid                     =frm.erpraemieid.value.replace(",", ".");
    var loypraemieid                    =frm.loypraemieid.value.replace(",", ".");
    var zulpraemieid                    =frm.zulpraemieid.value.replace(",", ".");
     
    var sonderpraemieid                 =frm.sonderpraemieid.value.replace(",", ".");
    var geschrepkostenid                =frm.geschrepkostenid.value.replace(",", ".");
    var sonstigesid                     =frm.sonstigesid.value.replace(",", ".");
    var zubehoerid                      =frm.zubehoerid.value.replace(",", ".");
    var naturalrabattid                 =frm.naturalrabattid.value.replace(",", ".");
    var vermittlungsprovisionid         =frm.vermittlungsprovisionid.value.replace(",", ".");
     
    var ekarenaid                       =frm.ekarenaid.value.replace(",", ".");
    var ekbetriebid                     =frm.ekbetriebid.value.replace(",", ".");
    var gukdid                          =frm.gukdid.value.replace(",", ".");
    var rlszid                          =frm.rlszid.value.replace(",", ".");
    var verssumid                       =frm.verssumid.value.replace(",", ".");
    var voraussichtlichekostenid        =frm.voraussichtlichekostenid.value.replace(",", ".");
    var praemiegeshisid                 =frm.praemiegeshisid.value.replace(",", ".");
     
    praemiegesid = Number(inzpraemieid)+Number(retpraemieid)+Number(erpraemieid)+Number(loypraemieid)+Number(zulpraemieid);
     
     
     
    if(schema == 10) {
     
    nachlassgwid = Number(ekbetriebid)-Number(gukdid)-Number(rlszid)-Number(ekarenaid);
     
    gesamtnachlassid = Number(nachlassid)+Number(nachlassgwid)+Number(bankid)-praemiegesid-Number(sonderpraemieid)+Number(sonstigesid)+Number(zubehoerid)+Number(naturalrabattid)+Number(vermittlungsprovisionid);
     
    frm.gesamtnachlassid.value =  gesamtnachlassid.toFixed(2).replace(".", ",");
     
     
    frm.gesamtnachlass1id.value =  frm.gesamtnachlassid.value;
     
    nachlassp1 = (Math.round((gesamtnachlassid*100/neuwagenlpnettoid)*1000))/1000;
     
    nachlassp1 = nachlassp1 *1000;
     
    nachlassp1 = Math.round(nachlassp1);
     
    nachlassp1 = nachlassp1 / 1000;
     
     
    frm.gesamtnachlassinprozentid.value = nachlassp1.toFixed(3).replace(".",",");
     
    if (frm.gesamtnachlassinprozentid.value == "NaN") frm.gesamtnachlassinprozentid.value = "0,000";
     
    frm.gesamtprozentid.value           = frm.gesamtnachlassinprozentid.value;
     
    frm.neuwagenlpnettoid.value         = (Number(neuwagenlpnettoid)).toFixed(2).replace(".", ",");
    frm.nachlassinprozentid.value       = (Number(nachlassinprozentid)).toFixed(3).replace(".", ",");
    frm.nachlassid.value                = (Number(nachlassid)).toFixed(2).replace(".",",");
    frm.nachlassgwid.value              = (Number(nachlassgwid)).toFixed(2).replace(".", ",");
     
    frm.nachlassgweid.value             = frm.nachlassgwid.value;
    //frm.nachgwid.value                        = frm.nachlassgweinid.value;
     
     
    frm.bankid.value                    = (Number(bankid)).toFixed(2).replace(".", ",");
     
    frm.inzpraemieid.value              =(Number(inzpraemieid)).toFixed(2).replace(".", ",");
    frm.retpraemieid.value              =(Number(retpraemieid)).toFixed(2).replace(".", ",");
    frm.erpraemieid.value               =(Number(erpraemieid)).toFixed(2).replace(".", ",");
    frm.loypraemieid.value              =(Number(loypraemieid)).toFixed(2).replace(".", ",");
    frm.zulpraemieid.value              =(Number(zulpraemieid)).toFixed(2).replace(".", ",");
     
    frm.praemiegesid.value              =(Number(praemiegesid)).toFixed(2).replace(".", ",");
    frm.praemiegeshisid.value           =(Number(praemiegeshisid)).toFixed(2).replace(".", ",");
     
    frm.praemiegesamtid.value           = frm.praemiegesid.value;
     
    frm.sonderpraemieid.value           = (Number(sonderpraemieid)).toFixed(2).replace(".", ",");
    frm.sonstigesid.value               = (Number(sonstigesid)).toFixed(2).replace(".", ",");
    frm.zubehoerid.value                = (Number(zubehoerid)).toFixed(2).replace(".", ",");
    frm.naturalrabattid.value           = (Number(naturalrabattid)).toFixed(2).replace(".", ",");
    frm.vermittlungsprovisionid.value   = (Number(vermittlungsprovisionid)).toFixed(2).replace(".", ",");
     
     
     
    frm.ekbetriebid.value               = (Number(ekbetriebid)).toFixed(2).replace(".", ",");
    frm.ekarenaid.value                 = (Number(ekarenaid)).toFixed(2).replace(".", ",");
    frm.rlszid.value                    = (Number(rlszid)).toFixed(2).replace(".", ",");
    frm.gukdid.value                    = (Number(gukdid)).toFixed(2).replace(".", ",");
    frm.voraussichtlichekostenid.value  = (Number(voraussichtlichekostenid)).toFixed(2).replace(".", ",");
    frm.verssumid.value                 = (Number(verssumid)).toFixed(2).replace(".", ",");
     
     
    }
     
    if(schema == 20) {
        
     
    nachlassgwid = Number(ekbetriebid)-Number(gukdid)-Number(rlszid)-Number(ekarenaid);
     
    vergleichzumindestvkid = Number(verkaufspreisid)-Number(mindestverkaufspreisid)-Number(nachlassgwid)-Number(bankid)-Number(geschrepkostenid)-Number(sonstigesid)-Number(zubehoerid)-Number(naturalrabattid)-Number(vermittlungsprovisionid)+praemiegesid;
     
    frm.verkaufspreisid.value               = (Number(verkaufspreisid)).toFixed(2).replace(".", ",");
    frm.mindestverkaufspreisid.value        = (Number(mindestverkaufspreisid)).toFixed(2).replace(".", ",");
    frm.nachlassgwid.value                  = (Number(nachlassgwid)).toFixed(2).replace(".", ",");
    frm.nachlassgweid.value                 = frm.nachlassgwid.value;
    frm.bankid.value                        = (Number(bankid)).toFixed(2).replace(".", ",");
     
    frm.inzpraemieid.value                  =(Number(inzpraemieid)).toFixed(2).replace(".", ",");
    frm.retpraemieid.value                  =(Number(retpraemieid)).toFixed(2).replace(".", ",");
    frm.erpraemieid.value                   =(Number(erpraemieid)).toFixed(2).replace(".", ",");
    frm.loypraemieid.value                  =(Number(loypraemieid)).toFixed(2).replace(".", ",");
    frm.zulpraemieid.value                  =(Number(zulpraemieid)).toFixed(2).replace(".", ",");
     
    frm.praemiegesid.value                  =(Number(praemiegesid)).toFixed(2).replace(".", ",");
     
    frm.praemiegesamtid.value               = frm.praemiegesid.value;
    frm.praemiegeshisid.value               =(Number(praemiegeshisid)).toFixed(2).replace(".", ",");
     
    frm.mindestverkaufspreisid.value        = (Number(mindestverkaufspreisid)).toFixed(2).replace(".", ",");
    frm.sonstigesid.value                   = (Number(sonstigesid)).toFixed(2).replace(".", ",");
    frm.zubehoerid.value                    = (Number(zubehoerid)).toFixed(2).replace(".", ",");
    frm.naturalrabattid.value               = (Number(naturalrabattid)).toFixed(2).replace(".", ",");
    frm.vermittlungsprovisionid.value       = (Number(vermittlungsprovisionid)).toFixed(2).replace(".", ",");
    frm.geschrepkostenid.value              = (Number(geschrepkostenid)).toFixed(2).replace(".", ",");
     
    frm.vergleichzumindestvkid.value        = (Number(vergleichzumindestvkid)).toFixed(2).replace(".", ",");
    frm.vergleichzumindestvk1id.value       = frm.vergleichzumindestvkid.value;
     
    frm.ekbetriebid.value                   = (Number(ekbetriebid)).toFixed(2).replace(".", ",");
    frm.ekarenaid.value                     = (Number(ekarenaid)).toFixed(2).replace(".", ",");
    frm.rlszid.value                        = (Number(rlszid)).toFixed(2).replace(".", ",");
    frm.gukdid.value                        = (Number(gukdid)).toFixed(2).replace(".", ",");
    frm.voraussichtlichekostenid.value      = (Number(voraussichtlichekostenid)).toFixed(2).replace(".", ",");
    frm.verssumid.value                     = (Number(verssumid)).toFixed(2).replace(".", ",");
     
     
    }
     
     
     
    Prov()
     
    }
     
     
    function formular(ja,di,lt,sly,provsystemnw,provsystemgw) {
        
     
        
    provsys         = sly; 
    kalk            = ja;
    systemnw        = provsystemnw;
    systemgw        = provsystemgw;
    schema          = ja;
     
        
        if ((ja == 20) || (ja == 30))  {    
                            
                                document.getElementById("mitte").style.display="block";
                    
                                document.getElementById("nw_1").style.display="none";
                                document.getElementById("nw_2").style.display="none";
                                document.getElementById("nw_3").style.display="none";
                                document.getElementById("nw_4").style.display="none";
                                
                                document.getElementById("gw_1").style.display="block";
                                document.getElementById("gw_2").style.display="block";
                                document.getElementById("gw_3").style.display="block";
                                document.getElementById("gw_4").style.display="block";
                                 
                praemien(ja)
                
             } 
                        else 
            {
     
        if(ja == 10) {
        
                                document.getElementById("mitte").style.display="block";
                                document.getElementById("gw-daten").style.display="none";
                                
                
                                document.getElementById("nw_1").style.display="block";
                                document.getElementById("nw_2").style.display="block";
                                document.getElementById("nw_3").style.display="block";
                                document.getElementById("nw_4").style.display="block";
                                
                                
                                document.getElementById("gw_1").style.display="none";
                                document.getElementById("gw_2").style.display="none";
                                document.getElementById("gw_3").style.display="none";
                                document.getElementById("gw_4").style.display="none";
                                
                                
     
     
        praemien(ja)
        
        
        } 
        }
        }
     
     
    function praemien(ja) { }
     
     
    function gw(ja) {
        
        
     
        if (ja ==100 ) {    
        
                document.getElementById("gw-daten").style.display="block";
                
                //document.getElementById("gwtypid").focus();
     
        
      } 
      else 
    {           // Inhalt des Formulars GW leeren
                
                document.getElementById("gwtypid").value="";
                document.getElementById("fahrgestellnummerid").value="";
                document.getElementById("kmstandid").value="";
                document.getElementById("bjid").value="";
                
                document.form1.ankaufvonid.selectedIndex = 0;
                document.form1.mwstausweisbarid.selectedIndex = 0;
                document.form1.ruecknahmeverpflichtungid.selectedIndex = 0;
                
                document.getElementById("ekbetriebid").value="";
                document.getElementById("ekarenaid").value="";
                document.getElementById("bewertungnrschwackeid").value="";
                document.getElementById("vertragsnummerid").value="";  
                document.getElementById("rlszid").value=""; 
                document.getElementById("rgankdid").value=""; 
                document.getElementById("gukdid").value=""; 
                document.getElementById("fahrzeugmaengelid").value=""; 
                document.getElementById("voraussichtlichekostenid").value=""; 
     
                document.getElementById("gw-daten").style.display="none";
     
                doLiveRes()
     
     
    }
    }
    function num(id) {
     
    var sa = document.getElementById(id).value.replace(",", ".");
     
    document.getElementById(id).value   = (Number(sa)).toFixed(2).replace(".", ",");
     
    }
     
    function daten(err) {
     
     
        
        if(err != undefined) {
            
        
        frm=document.form1;
        
        var betragnachin1               =  frm.betragnachid1.value.replace(",", ".");
        var betragnachin2               =  frm.betragnachid2.value.replace(",", ".");
        var betragnachin3               =  frm.betragnachid3.value.replace(",", ".");
        var betragnachin4               =  frm.betragnachid4.value.replace(",", ".");
        var betragnachin5               =  frm.betragnachid5.value.replace(",", ".");
     
        gesamt = Number(betragnachin1) + Number(betragnachin2) + Number(betragnachin3) + Number(betragnachin4) + Number(betragnachin5);
        
        form1.zubehoerid.value =  gesamt;
        
     
     
        }
    }

    Ich hoffe das war jetzt nicht zuviel! So funktioniert auch alles! Nur ich möchte den Code vereinfachen und werte über Arrays verwalten!

    Danke für deine Mühe!

    Darkpriest
     

  8. #8
    deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.731
    Hi.

    Ja, es ist doch etwas viel und ein wenig unübersichtlich. Man kann sich das nicht zufällig "live" ansehen?

    Zuerst mal ist der Zugriff auf form1 über "document.form1" nicht zulässig. Siehe http://de.selfhtml.org/javascript/ob...tm#allgemeines

    Auf die Elemente einer form muss auch anders zugegriffen werden (http://de.selfhtml.org/javascript/ob...tm#allgemeines).

    Beim label hast du für das Attribut for den Wert "name" angegeben. Dort sollte die ID des Elements stehen für das das Label verantwortlich ist, also in dem Fall "neuwagenlpnettoid".

    Der Wert eines name Attributes sollte ausschließlich Buchstaben oder Ziffern, Unterstriche aber keien Leerzeichen, Umlaute oder sonstige Sonderzeichen enthalten.

    Dann hast du jetzt den funktionierenden Code gepostet. Das nützt ja nun aber nicht viel um den Fehler im neuen Code zu finden, oder?! Und könntest du bitte wirklich den HTML Code posten und nicht den PHP Code?

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  9. #9
    darkpriest ist offline Mitglied Bronze
    Registriert seit
    Jul 2007
    Beiträge
    30
    Hallo,

    leider kann man das nicht live ansehen! Läuft hier lokal im Intranet! Das Projekt ist leider sehr umfangreich u. der HTML-Code wird über PHP-Funktionen erstellt.

    Ich verstehe das mit dem Zugriff auf die Felder nicht, warum darf ich so nicht zugreifen! Es funktioniert doch! Oder liegt genau hier der Fehler?

    Ich möchte eigentlich nur den Code der Funktionen vereinfachen!

    Code :
    1
    
    //var variablen = new Array("neuwagenlpnettoid", "Feld2", "Feld3");

    Diese Felder möchte ich nun innerhalb der Funktion "doliveRes" deklarieren!

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
     
    var part1 ="frm.";
    var part3 =".value";
     
    for (var i = 0; i < variablen.length; i++) 
     
            { 
                
                var document.forms["form1"].elements[variablen[i]].id = (document.forms["form1"].elements[variablen[i]].value.replace(",", ".")); 
                alert(neuwagenlpnettoid);
                
            }

    Bei dieser Anweisung bleibt er aber schon als fehlerhaft hängen und meldet "Objekt erwartet".

    Wenn ich aber die Variablen aber einzeln deklariere, bsp.

    var neuwagenlpnettoid = frm.neuwagenlpnettoid.value.replace(",", ".");

    funktioniert es, obwohl ich vom Ablauf in der selben Funktion bin!

    Danke!

    Darkpriest
     

  10. #10
    deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.731
    Zitat Zitat von darkpriest Beitrag anzeigen
    Ich verstehe das mit dem Zugriff auf die Felder nicht, warum darf ich so nicht zugreifen! Es funktioniert doch! Oder liegt genau hier der Fehler?
    Grundsätzlich ist es eine schlechte Idee eine Zugriffs-Methode zu verwenden die laut Standard gar nicht existiert. Für einfachen Code mag es noch funktionieren wenn der Browser sich noch "denken kann" was gemeint ist. Sonst ist es eine unnötige Fehlerquelle und einfach qualitativ minderwertiger Code.
    Zitat Zitat von darkpriest Beitrag anzeigen
    Code :
    1
    
    //var variablen = new Array("neuwagenlpnettoid", "Feld2", "Feld3");

    Diese Felder möchte ich nun innerhalb der Funktion "doliveRes" deklarieren!

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
     
    var part1 ="frm.";
    var part3 =".value";
     
    for (var i = 0; i < variablen.length; i++) 
     
            { 
                
                var document.forms["form1"].elements[variablen[i]].id = (document.forms["form1"].elements[variablen[i]].value.replace(",", ".")); 
                alert(neuwagenlpnettoid);
                
            }

    Bei dieser Anweisung bleibt er aber schon als fehlerhaft hängen und meldet "Objekt erwartet".
    Wenn du auf ein Element namens "neuwagenlpnettoid" zugreifen willst, dann muss das Element aber auch diesen Namen haben. Dein Element heißt aber nicht "neuwagenlpnettoid" sondern "kalk[neuwagenlpnettoin]" (wobei name keine Leerzeichen und Umlaute enthalten sollte, erstes Zeichen ein Buchstabe, sonst auch Ziffern, Unterstrich (_), Bindestrich (-), Doppelpunkt (:) oder Punkt (.) bestehen sollte)

    Wenn jedes Element eine eindeutige ID hat, kannst du natürlich auch über die ID darauf zugreifen:
    Code javascript:
    1
    
    document.getElementById(variablen[i]).value = ...;

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  11. #11
    darkpriest ist offline Mitglied Bronze
    Registriert seit
    Jul 2007
    Beiträge
    30
    Hallo,

    okay! dann habe ich einfach glück gehabt mit meinem Fehler, werde alles so umbauen!

    Ich habe allen Elementen eindeutige Id's zugeordnet. Damit kann ich doch nun so wie du gesagt hast auf meine Elemente zugreifen:

    Code :
    1
    
    document.getElementById(variablen[i]).value = ...;

    Meine Schleife durchläuft nun die einzelnen Array-Felder:

    feld 1 = "neuwagenlpnettoid";

    Nun möchte ich eine neue Variable aus dem Arrayfeld mit dem Namen erstellen.

    Mein Versuch:

    var variablen[i];

    schlägt leider fehl, mit der Fehlermeldung "Objekt erforderlich"!
    Ich will doch nur den String "neuwagenlpnettoid" als Variable mit dem Wert

    document.getElementById(neuwagenlpnettoid).value erstellen!

    Bitte kannst du mir helfen?

    Darkpriest
     

  12. #12
    deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.731
    Hi.
    Zitat Zitat von darkpriest Beitrag anzeigen
    Nun möchte ich eine neue Variable aus dem Arrayfeld mit dem Namen erstellen.

    Mein Versuch:

    var variablen[i];

    schlägt leider fehl, mit der Fehlermeldung "Objekt erforderlich"!
    Ich will doch nur den String "neuwagenlpnettoid" als Variable mit dem Wert

    document.getElementById(neuwagenlpnettoid).value erstellen!
    Wozu willst du das machen? Die Schleife sollte doch relativ generisch für alle Elemente aus dem Array sein. Man könnte eine Variable dynamisch mit der eval() erzeugen, aber wozu? Mach's doch einfach so:
    Code javascript:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    var array = new Array("abc", "def", /* ... usw */);
     
    for (var i = 0; i < array.length; ++i) {
      var e = document.getElementById(array[i]);
     
      // zur Sicherheit:
      if (e != null)
        e.value = e.value.replace(".", ",");
    }
    Gruß
    Geändert von deepthroat (17.11.07 um 12:01 Uhr) Grund: auf Existenz prüfen
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  13. #13
    darkpriest ist offline Mitglied Bronze
    Registriert seit
    Jul 2007
    Beiträge
    30
    Hallo,

    jetzt haben wir (du) es fast geschaft.

    Habe mal folgende Anpassung bei mir gemacht:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    var variablen = new Array("neuwagenlpnettoid", "nachlassid"); 
     
    for (var i = 0; i < variablen.length; i++)  { 
                
                      var e = document.getElementById(variablen[i]);
                    
                      e.value = e.value.replace(".", ",");
                      
                                 }

    Wenn ich mir e nun mit alert ausgeben lasse, bekomme ich die meldung "Objekt". Ich möchte aber in meinem weiteren Script mit der Variablen "neuwagenlpnettoid" weiterrechnen, wie erstelle ich nun die Variable "neuwagenlpnettoid" !

    Der wert muß ja e.value sein!

    Danke!

    Darkpriest
     

  14. #14
    deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.731
    Hi.

    Also wie gesagt ist das eigentlich unsinnig. Zumal es ein Sprachmittel gibt die Elemente einer Form direkt anzusprechen:
    Code javascript:
    1
    2
    3
    4
    5
    
    with (document.forms.form1.elements) {
      neuwagenlpnetto.value = neuwagenlpnetto.value.replace(".", ",");
     
      /* usw. */
    }
    Das setzt natürlich voraus, dass man die Elemente vernünftig benannt hat.

    Man könnte natürlich die IDs der Elemente nun wieder als globale Variablen zum window Objekt hinzufügen, aber das ist wirklich nicht zu empfehlen:
    Code javascript:
    1
    2
    3
    4
    5
    
    for (var i = ... ) {
      var e = document.getElementById(variablen[i]);
     
      window[variablen[i]] = e; // äußerst unschön.
    }
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  15. #15
    darkpriest ist offline Mitglied Bronze
    Registriert seit
    Jul 2007
    Beiträge
    30
    Hallo,

    jetzt habe ich es glaube ich verstanden!

    Mit der 1. Schleife erstelle ich Objekte (e)! Und wenn der Wert von e nicht null ist, kann ich mir in meinem Script diese Zeile sparen:

    var verkaufspreisid = frm.verkaufspreisid.value.replace(",", ".");

    Berechnungen kann ich durchführen in dem Construkt:

    with (document.forms.form1.elements) { }

    hier immer meine Feldbezeichnung aus dem Array aus Schleife 1 + .value!

    Werte an das Formular gebe ich mit:

    document.getElementById("neuwagenlpnettoid").value = 65000;

    zurück!

    Bin ich jetzt richtig unterwegs?

    Danke!
     

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. wir effektiv variablen deklarieren - laufzeitproblem
    Von pitti24 im Forum Sonstige Sprachen
    Antworten: 1
    Letzter Beitrag: 22.07.10, 11:01
  2. Globale Variablen deklarieren? [C++]
    Von warcraft9105 im Forum .NET Windows Forms
    Antworten: 6
    Letzter Beitrag: 11.07.08, 20:21
  3. Antworten: 4
    Letzter Beitrag: 11.01.08, 10:00
  4. VB 2005: Variablen deklarieren/automatisieren
    Von Uther im Forum .NET Café
    Antworten: 4
    Letzter Beitrag: 18.10.07, 09:16
  5. Variablen doppelt deklarieren
    Von Liberty-son im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 30.05.07, 14:03