Feldname
Jens
- javascript
Hallo,
ich bin dabei einen Shop von 1und1 zu modifizieren. Ich stehe vor dem Problem, auf ein Input-Feld mit dem Namen article[Grösse] zugreifen zu müssen(mit document.form.article[Grösse].value). Dabei bekomme ich die Meldung, dass 'Grösse' nicht definiert ist. Es liegt wohl an den Klammern, da beliebige andere Namen funktionieren. Ich kann den Namen allerdings nicht ändern, da das Feld im Anschluss mit PHP ausgewertet wird. Wie kann ich das Feld(genau dieses!) trotzdem ansprechen bzw. dem Browser klarmachen, dass es nur ein Eigenname ist?
Mahlzeit.
Ich stehe vor dem Problem, auf ein Input-Feld mit dem Namen article[Grösse] zugreifen zu müssen(mit document.form.article[Grösse].value).
Du kannst das Element auch mit document.forms[0].elements[n] ansprechen, siehe
http://selfhtml.teamone.de/javascript/objekte/elements.htm#allgemeines
Vielleicht hilft's
Siechfred
Danke für die schnelle Antwort. Die Lösung funktioniert, ist aber nur bedingt für die dynamisch erzeugten Varianten des Shops geeignet(d.h. die Eigennamen werden auch dann korrekt angesprochen, wenn sich der Inhalt/Umfang des Formulars ändert). Aber das kann ich evtl. trotzdem korrekt implementieren. Läuft diese Variante denn mit allen Browsern?
Jens
Hallo Jens.
Die Lösung funktioniert, ist aber nur bedingt für die dynamisch erzeugten Varianten des Shops geeignet(d.h. die Eigennamen werden auch dann korrekt angesprochen, wenn sich der Inhalt/Umfang des Formulars ändert).
Nun, dann solltest du auf die eckigen Klammern verzichten. Solltest du jedoch Einfluss auf die dynamische Erzeugung des Formulars haben, ändere einfach den Bezeichner, dann wärst du alle Sorgen los :-)
Aber das kann ich evtl. trotzdem korrekt implementieren. Läuft diese Variante denn mit allen Browsern?
Laut Selfhtml im Netscape ab 2.0 und IE ab 3.0, sodass man deine Frage ruhigen Gewissens mit ja beantworten kann.
Grüße
Siechfred
Leider kann(darf) ich den Bezeichner nicht beeinflussen-er ist zwar dynamisch erzeugt, wird aber an vielen Stellen im Shop verwendet. Ich werd wohl auf deinen Vorschlag zurückgreifen. Mich würde aber trotzdem mal interessieren, warum "[]" nicht im Namen verwendet werden können. Das scheint mir, als wenn das vom Browser als Array interpretiert wird...
hi,
Mich würde aber trotzdem mal interessieren, warum "[]" nicht im Namen verwendet werden können.
wieso, dürfen sie doch ohne weiteres.
Das scheint mir, als wenn das vom Browser als Array interpretiert wird...
in der schreibweise document.fomularname.feldname[].eigenschaft, ja.
in der anderen schreibweise, die Siechfred dir nannte, aber nicht.
gruss,
wahsaga
@wahsaga:
schön wärs... der Name ist "article[Grösse]" - die Fehlermeldung dazu ist " 'Grösse' ist nicht definiert oder kein Objekt"(so ähnlich). Nehm ich einen Namen ohne Klammern geht es problemlos. Er sagt ja auch nicht, dass article[Grösse] nicht geht, sondern bezieht sich nur auf 'Grösse'. Ich denk schon, dass die Klammern das Problem sind. Aber vielleicht weiss noch jemand ganz genau bescheid darüber.(?)
hi,
schön wärs... der Name ist "article[Grösse]" - die Fehlermeldung dazu ist " 'Grösse' ist nicht definiert oder kein Objekt"(so ähnlich).
ja, weil name[] in javascript nun mal die schreibweise für einen array-zugriff ist.
es gibt aber bei dir keinen array-index 'Grösse', nicht zuletzt deshalb, weil article an der stelle gar kein array ist.
Nehm ich einen Namen ohne Klammern geht es problemlos. Er sagt ja auch nicht, dass article[Grösse] nicht geht, sondern bezieht sich nur auf 'Grösse'. Ich denk schon, dass die Klammern das Problem sind.
ja, natürlich sind sie das, weil - s.o. - diese schreibweise für javascript einen array-zugriff bedeutet.
gruss,
wahsaga