document formularname elementname funktioniert nicht bei input type="image"

rootssw

Erfahrenes Mitglied
Hallo!

Ich hab' ein Problem mit folgendem Script:

HTML:
<html>
<body>
<form name="testform">
<input name="testtext" type="text" value="testtext" />
<input name="testimage" type="image" src="/test.jpg" />
</form>
<script type="text/javascript">
<!--
alert (document.testform.elements.length);
// Ergebnis : '1'
// oder
alert (document.testform.elements['testimage']);
// Ergebnis: 'Undefined'  -  bei 'testtext' funktioniert es hingegen
//-->
</script>
</body>
</html>

Das soll nur ein Beispiel sein, da das Problem in allen Varianten auftaucht.
So zeigt die 'alert-Box' mir hier nur '1' an, obwohl es eigentlich zwei Elemente in dem Formular gibt.
Egal, was ich auf diese Weise probiere (document.formularname.elementname - wobei das Element vom Typ 'image' ist) will einfach nicht funktionieren.

Liegt das wirklich daran, dass ein Input-Element vom Typ 'image' nicht in das Objekt aufgenommen wird, so wie ich es im Augenblick vermute?
SelfHTML sagt auch nicht mehr zum Thema, als dass alle Elemente aufgenommen werden sollten. Auch hat die Suche nichts vernünftiges ergeben.

Im Augenblick sehe ich nur die Möglichkeit über die Funktion 'getElementByID' auf das Element zuzugreifen, das ist aber nicht gerade abwärtskompatibel.
Kennt jemand (sofern das obige Beispiel nicht verbessert werden kann) denn wenigstens einen anderen Weg, um auf das Element zuzugreifen (ich müsste das 'src'-Attribut ändern (mit EventHandlern kann ich leider auch nicht arbeiten - in der Form von onmouseover="this.src='test2.jpg'").

Vielen dank für jegliche Hilfe!
 
Auszug aus selfhtml

Beachten Sie:

Hinter dem, was hier als elements-Objekt bezeichnet wird, verbergen sich in Wirklichkeit mehrere, allerdings sehr ähnliche JavaScript-Objekte. So gibt es Objekte für Eingabefelder, Auswahllisten, verschiedene Arten von Buttons. Alle diese Objekte werden jedoch im so genannten "elements-Array" zusammengefasst. Alle diese Objekte werden auf die gleiche Art und Weise angesprochen. Sie unterscheiden sich lediglich in ihren Eigenschaften und Methoden. Bei den Eigenschaften und Methoden in diesem Abschnitt ist daher immer vermerkt, für welche Objekte sie gelten. Folgende Angaben werden dabei unterschieden (die Verweise führen zu den entsprechenden Beschreibungen in der HTML-Dokumentation):

Klick-Buttons Checkboxen Felder für Datei-Upload Versteckte Elemente Passwortfelder Radio-Buttons Abbrechen-Buttons Absendebuttons einzeilige Eingabefelder mehrzeilige Eingabefelder

Bei den Eigenschaften und Methoden des elements-Objekts wird jeweils angegeben, auf welche dieser Elementtypen die Eigenschaft bzw. Methode anwendbar ist.:



Daraus (s. fetter Text ) entnehme ich, dass die input felder des types "image" nicht als Element mitgezählt werden...
Ich hoffe, das hilft dir weiter

Greetz
 
Die einzige andere Methode, die mir einfällt, wäre
Code:
document.getElementsByName('testimage')[0]
... ist aber genauso abwärtskompatibel wie getElementById() :(

...aber was solls... willst du tatsächlich noch für Netscape4 "optimieren" :confused: ...wir haben 2005, irgendwann ist mal Schluss.

Man macht wöchentlich ein Update, damit der Virenscanner Up2Date ist.... und surft dann mit nem 5Jahre alten Browser...wer das tut, ist selber Schuld(ich glaube nichtmal, dass den noch Leute benutzen...ausser "Webdesigner", welche glauben, damit noch testen zu müssen:-))
 
Naja, ich hatte gehofft, dass die "image-Buttons" in den Bereich der "Absenden-Buttons" gehört, da die Funktionalität gleich ist.
Das mit dem "getElementsByName" war mir schon bekannt, wie du aber auch selbst schon erkannt hast, macht das leider keinerlei brauchbaren Unterschied.

:(
 

Neue Beiträge

Zurück