document.Form.getElementsById()
derbaer
- javascript
Hi,
document.TestForm.getElementsByName('firstname').
ich moechte das input value erfahren von dem input mit dem namen "firstname"
ich moechte aber direkt auf das form "TestForm" zugreifen
deswegen auch "document.TestForm" aber irgentwie will das nicht funktionieren der bricht einfach ab gibt aber auch kein fehler aus er fuehrt nur nach der zeile den test alert den ich eingefuegt hab nicht mehr aus
schreibt man das anders?
Mahlzeit derbaer,
document.TestForm.getElementsByName('firstname').
Aha. Und nu?
Das ist kein vollständiger und korrekter Code - was genau willst Du mit dem genannten Code erreichen, wie genau verwendest Du ihn? Dir ist bewusst, dass sich das Obenstehende von dem in der Überschrift genannten Code (der im Übrigen auch falsch ist) unterscheidet?
ich moechte das input value erfahren von dem input mit dem namen "firstname"
Warum greifst Du dann nicht einfach direkt darauf zu?
alert(document.getElementsByName('firstname')[0].value);
ich moechte aber direkt auf das form "TestForm" zugreifen
Warum? Ich dachte, Du willst auf das Eingabeelement zugreifen und nicht auf das Formular, in dem es sich befindet?
Sei's drum, wenn Du auf das Formular zugreifen willst:
alert(document.forms['TestForm'].target);
Wenn Du doch auf das Eingabeelement zugreifen willst, aber sicherstellen willst, dass Du dasjenige im Formular namens "TestForm" erwischst:
alert(document.forms['TestForm'].elements['firstname'].value);
deswegen auch "document.TestForm" aber irgentwie will das nicht funktionieren
Natürlich nicht, solange Du es falsch machst.
der bricht einfach ab gibt aber auch kein fehler aus
Unglaubwürdig. Was steht in der Fehlerkonsole?
er fuehrt nur nach der zeile den test alert den ich eingefuegt hab nicht mehr aus
Warum zeigst Du diesen - offenbar relevanten - Teil Deines Codes nicht? Müssen wir raten, was genau Du da programmiert hast?
schreibt man das anders?
Vermutlich. Solange Du Deinen Lesern aber notwendige Informationen vorenthältst, kann Dir das keiner mit Gewissheit sagen.
MfG,
EKKi
Hallo!
alert(document.forms['TestForm'].target);
alert(document.forms['TestForm'].elements['firstname'].value);
Was auch nichts anderes ist als
document.TestForm.firstname
bzw. eindeutiger
document.forms.TestForm.elements.firstname
Die Klammersyntax ist hier unnötig.
deswegen auch "document.TestForm" aber irgentwie will das nicht funktionieren
Natürlich nicht, solange Du es falsch machst.
Man kann seit JavaScript-Urzeiten über document.formularname auf ein Formular zugreifen. Das ist uneindeutig, aber nicht falsch (JavaScript 1.3,
HTML5).
Jannis
Mahlzeit Jannis,
Was auch nichts anderes ist als
document.TestForm.firstname
bzw. eindeutiger
document.forms.TestForm.elements.firstname
Richtig.
Die Klammersyntax ist hier unnötig.
Die "Klammersyntax" ist aber vielen Anfängern bzw. weniger Bewanderten überhaupt gar nicht bewusst, so dass mit abenteuerlichen, selbst ausgedachten Konstruktionen herumgefrickelt wird - insbesondere, wenn es um per Variable übergebene Formular- oder Elementnamen geht. Deshalb verweise ich eigentlich fast immer (direkt oder indirekt) auf <http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines@title=das entsprechende Kapitel in SELFHTML> ... meist auch mit dem Hinweis auf "Schema 4".
deswegen auch "document.TestForm" aber irgentwie will das nicht funktionieren
Natürlich nicht, solange Du es falsch machst.
Man kann seit JavaScript-Urzeiten über document.formularname auf ein Formular zugreifen. Das ist uneindeutig, aber nicht falsch (JavaScript 1.3,
HTML5).
Das ist zwar richtig - aber *irgendetwas* scheint derbaer trotzdem falsch zu machen ... sonst würde sein Code ja wie gewünscht funktionieren. Insbesondere die Behauptung, dass "document.TestForm [...] irgentwie [...] nicht funktionieren" will, ist mindestens ungenau, vermutlich eher nicht korrekt.
MfG,
EKKi
.getElementsByName() gibt je nach Browser ein Array bzw. einen Iterator (so etwas ähnliches, nur nicht mit allen prototypischen Möglichkeiten von Array - wer sich so etwas Beknacktes ausdenkt, arbeitet vermutlich für MicroSoft) zurück. Wenn Du also auf ein Element mit dem name-Attribut "firstname" zugreifen willst, musst Du document.getElementsByName('firstname')[0] verwenden.
Gruß, LX
Hallo,
.getElementsByName() gibt je nach Browser ein Array bzw. einen Iterator (so etwas ähnliches, nur nicht mit allen prototypischen Möglichkeiten von Array - wer sich so etwas Beknacktes ausdenkt, arbeitet vermutlich für MicroSoft)
Knotenlisten gibts überall in der DOM-API, sowohl im Core als auch im HTML-DOM. Die stammen im Übrigen nicht von Microsoft, sondern vom W3C.
getElementsByName liefert eine HTMLCollection, und dass diese nicht identisch mit einem Array ist, ist klar: Sie ist "live", d.h. sie wird dynamisch aktualisiert, wenn sich der Knotenbaum ändert. Die meisten Array-Instanzmethoden zum Hinzufügen, Löschen und Sortieren ergeben in diesem Kontext keinen Sinn. Lediglich ECMAScript-5-Methoden wie forEach, map, filter usw. wären brauchbar. Das Ausführung von Array-Instanzmethoden im Kontext von HTMLCollections funktioniert auch, aber Array.prototype.forEach.call(htmlcollection, function() {}) usw. liefert einem aufgrund der hybriden Natur von HTMLCollections nicht das, was man erwartet.
Jannis
h1,
schreibt man das anders?
Der Zugriff im DOM auf Formulare ist in SELFHTML doch nun wirklich gut beschrieben, was daran hast Du denn nicht verstanden?
Hotti
Hi,
document.TestForm.getElementsByName('firstname').
Im Titel schriebst du getElementById statt getElementsByName - was denn nun?
getElementById ist eine Methode, die ausschliesslich document besitzt. Das ist ja auch sinnvoll, weil IDs documentweit eindeutig sein müssen. Diese Methode kannst du also nicht als Methode bestimmter HTML-Element-Objekte aufrufen, wie das bspw. mit dem erwähnten getElementsByTagName möglich ist.
aber irgentwie will das nicht funktionieren der bricht einfach ab gibt aber auch kein fehler aus er fuehrt nur nach der zeile den test alert den ich eingefuegt hab nicht mehr aus
Das kann eigentlich nicht sein.
Weisst du denn überhaupt, wo dir JavaScript-Fehler angezeigt werden?
schreibt man das anders?
Den Text, den du hier geschrieben hast? Ja, den schreibt man anders - und zwar unter sinnvoller Nutzung von Interpunktion. Mach' das bitte künftig - denn „ohne Punkt und Komma” sind Texte schwer verständlich.
MfG ChrisB
Hallo,
document.TestForm.getElementsByName('firstname').
Im Titel schriebst du getElementById statt getElementsByName
im Titel schrieb er sogar von getElement_s_ById. Also schon da falsch.
getElementById ist eine Methode, die ausschliesslich document besitzt.
Danke, das war mir auch noch nicht bewusst, und die Erklärung ist schlüssig.
Den Text, den du hier geschrieben hast? Ja, den schreibt man anders - und zwar unter sinnvoller Nutzung von Interpunktion. Mach' das bitte künftig - denn „ohne Punkt und Komma” sind Texte schwer verständlich.
ACK.
So long,
Martin
Danke fuer die hilfe und die tips
dannach hab ich gesucht:
document.forms.testform.firstname
Mahlzeit baer,
dannach hab ich gesucht:
document.forms.testform.firstname
Nein, hast Du nicht.
Merke: Javascript unterscheidet zwischen Groß- und Kleinschreibung!
MfG,
EKKi
deswegen auch "document.TestForm" aber irgentwie will das nicht funktionieren der bricht einfach ab gibt aber auch kein fehler aus ...
Das glaube ich nicht, du weißt auch wo du die Fehler findest?
Struppi.