ERLEDIGT
JA
JA
ANTWORTEN
22
22
ZUGRIFFE
1524
1524
EMPFEHLEN
-
16.11.07 18:34 #1
- 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
-
Hi,
anhand deines Codeschnipsels ist nicht zu erkennen, woran der Fehler liegen könnte. Folgendes Konstrukt funktioniert bei mir problemlos:
CiaoCode :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>
QuaeseVielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
----
Der "Fortsetzungsroman" auf www.leuteforum.de
New kind to realize large scalable projects with jQuery: jQuery SDK
-
17.11.07 08:35 #3
- 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
-
17.11.07 09:09 #4
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.Wenn du die Felder in verschiedenen Funktionen brauchst, dann solltest du sie global definieren.
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.
-
17.11.07 09:18 #5
- 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
-
17.11.07 09:45 #6
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
17.11.07 10:07 #7
- 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
-
17.11.07 10:25 #8
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
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.
-
17.11.07 10:45 #9
- 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
-
17.11.07 11:27 #10
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
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.
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.
-
17.11.07 11:42 #11
- 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
-
17.11.07 11:59 #12
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.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:
Gruß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(".", ","); }
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.
-
17.11.07 12:16 #13
- 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
-
17.11.07 12:40 #14
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Also wie gesagt ist das eigentlich unsinnig. Zumal es ein Sprachmittel gibt die Elemente einer Form direkt anzusprechen:Das setzt natürlich voraus, dass man die Elemente vernünftig benannt hat.Code javascript:1 2 3 4 5
with (document.forms.form1.elements) { neuwagenlpnetto.value = neuwagenlpnetto.value.replace(".", ","); /* usw. */ }
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:GrußCode javascript:1 2 3 4 5
for (var i = ... ) { var e = document.getElementById(variablen[i]); window[variablen[i]] = e; // äußerst unschön. }
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
17.11.07 13:01 #15
- 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!
Ähnliche Themen
-
wir effektiv variablen deklarieren - laufzeitproblem
Von pitti24 im Forum Sonstige SprachenAntworten: 1Letzter Beitrag: 22.07.10, 11:01 -
Globale Variablen deklarieren? [C++]
Von warcraft9105 im Forum .NET Windows FormsAntworten: 6Letzter Beitrag: 11.07.08, 20:21 -
Variablen deklarieren, die in einer Textdatei stehen
Von Mahatmas im Forum C/C++Antworten: 4Letzter Beitrag: 11.01.08, 10:00 -
VB 2005: Variablen deklarieren/automatisieren
Von Uther im Forum .NET CaféAntworten: 4Letzter Beitrag: 18.10.07, 09:16 -
Variablen doppelt deklarieren
Von Liberty-son im Forum C/C++Antworten: 2Letzter Beitrag: 30.05.07, 14:03





Zitieren


Login





