Variablen in Var deklarieren

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:
document.getElementById(variablen[i]).value = ...;

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

Code:
feld 1 = "neuwagenlpnettoid";

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

Mein Versuch:

Code:
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
 
Hi.
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:
Javascript:
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ß
 
Zuletzt bearbeitet:
Hallo,

jetzt haben wir (du) es fast geschaft.

Habe mal folgende Anpassung bei mir gemacht:

Code:
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
 
Hi.

Also wie gesagt ist das eigentlich unsinnig. Zumal es ein Sprachmittel gibt die Elemente einer Form direkt anzusprechen:
Javascript:
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:
Javascript:
for (var i = ... ) {
  var e = document.getElementById(variablen[i]);

  window[variablen[i]] = e; // äußerst unschön.
}
Gruß
 
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!
 
Hi.
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(",", ".");
Wenn der Wert null ist - also das Objekt mit der ID nicht gefunden werden konnte, dann würde der Aufruf zu einem Fehler führen.
Berechnungen kann ich durchführen in dem Construkt:

with (document.forms.form1.elements) { }
Wie bereits gesagt: das würde nur funktionieren, wenn du für die Namen der Elemente valide Bezeichner gewählt hättest - was du aber nicht getan hast!

Wenn du die zweite Möglichkeit aus meinem vorigen Beitrag wählst, dann könntest du von überall einfach auf alle Elemente deren ID im Array drin war als Variable zugreifen. Das würde ich aber nicht unbedingt empfehlen. Also jedenfalls würde ich es auf keinen Fall so machen...

Gruß
 
Hi.
den Teil von deiner Antwort verstehe ich nicht, da ich doch für all meine Felder eindeutige Ids verwendet habe! Was meinst du da bitte?
Ich sprach vom Namen den man mit dem name Attribut vergibt - im Gegensatz zur ID die man mit dem id Attribut verteilt. Das sind 2 völlig verschiedene Dinge. Beide sollten gültige Bezeichner sein - was du anscheinend nur bei der ID durchgehalten hast, für den Namen allerdings nicht. (Wobei ich nicht den HTML Code für die anderen Elemente gesehen habe...)

Gruß
 
Hallo,

möchte das für die Zukunft nur richtig machen, darum die Frage:

Code:
     with (document.forms.form1.elements) {  
        neuwagenlpnetto.value = neuwagenlpnetto.value.replace(".", ",");  
    }

Der oben angeführte Codeschnipsel bezieht sich nur auf die NAMEN der Elemente oder verstehe ich das jetzt falsch? Also wäre in dem oben angeführten Beispiel:

<input type="text" name="neuwagenlpnetto" usw.>

Bezieht sich dann elements immer auf NAMEN?

Ist der name kalk[test] möglich oder nicht?

Danke für die große Mühe die du dir mit mir machst!

Darkpriest
 
Hi.
Code:
     with (document.forms.form1.elements) {  
        neuwagenlpnetto.value = neuwagenlpnetto.value.replace(".", ",");  
    }

Der oben angeführte Codeschnipsel bezieht sich nur auf die NAMEN der Elemente[...]?
Ja.
Also wäre in dem oben angeführten Beispiel:

<input type="text" name="neuwagenlpnetto" usw.>

Bezieht sich dann elements immer auf NAMEN?
Ja, in dem element Objekt sind die einzelnen Formularelemente über den Namen zugreifbar. Siehe http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines
Ist der name kalk[test] möglich oder nicht?
Wozu soll denn dieser Name gut sein? Laut HTML ist der Name erlaubt, es empfiehlt sich aber generell - und insbesondere im Hinblick auf die Verarbeitung mit Javascript - Namen zu wählen die auch in Javascript valide Bezeichner sind. Folgendes kann mit dem Namen "kalk[test]" nicht funktionieren:
Javascript:
with (document.forms.form1.elements) {  
        kalk[test].value = kalk[test].value.replace(".", ",");
}
Gruß
 
Zurück