wahsaga: Wie erhalte ich den aktuellen Index eines Fomular-Elements?

Beitrag lesen

hi,

geht das nicht auch anders als über den index?

Leider nicht. Da die Eingabefelder dynamisch sind und über ein Template eingeladen werden, sehe ich keine andere Möglichkeit.

na ja, meine frage zielte eher in die richtung, wofür du denn anschließend den index des feldes zu verwenden gedenkst, wenn du ihn erst mal ermittelt hättest.

das element selber hat natürlich keine ahnung davon, an welcher stelle es steht.

Warum "natürlich"?

wozu sollte das element das wissen wollen?
das wollen immer nur andere wissen, die beispielsweise das element über einen index in der elements-collection ansprechen wollen ;-)
aber dem element selber ist es doch egal, welche index-nummer es nun hätte - es weiß, dass es this ist, und damit ist seinem wunsch nach persönlichkeitsentwicklung genüge getan.

Eine Element ist doch ein ererbtes Objekt vom Typ Node. Sollte es da nicht eine Funktion geben, bei der man den Standpunkt im Nodebaum feststellen kann?

nicht das ich wüßte.

Haben die Elemente denn eindeutige ID´s?

die frage müsstest du doch wohl eher beantworten können.

wenn du meinst, ob das element selber weiß, welche ID es hat: this.id sollte am element natürlich gesetzt sein, so es denn eine bekommen hat.

Woran kann ich prüfen, ob ich in der richtigen Zeile bin, wenn der Index das einzige ist, was ein Input-Feld von einem anderen unterscheidet?

ist er ja nicht.
mit this übergibst du die referenz auf das input-feld, von dem aus du die funktion aufrufst. wenn du diese referenz jetzt mit allen in der elements-collection abgelegten referezen vergleichst, ergibt dieser vergleich ja nur an einer einzigen stelle true. bei welchem index der elements-collection du dann gerade bist, kannst du ja an deinem schleifenzähler ablesen.

btw: da fällt mir gerade noch ein anderer, ggf. gangbarer weg ein:
du schreibst dir eine initialisierungsfunktion, die onLoad alle elements per schleife durchläuft, und jedem eine _zusätzliche_ eigenschaft mit einem namen wie meinetwegen meinIndex verpasst, wo du dann den aktuellen schleifenzähler reinschreibst:

var anzahlElemente = document.{formularname}.elements.length;
for(var i=0; i < anzahlElemente; i++) {
  document.{formularname}.elements[i].meinIndex = i;
}

dann solltest du aus dem element heraus über this.meinIndex zugriff auf den vorher "ermittelten" index des jeweiligen elements haben.

gruß,
wahsaga

--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }