Index eines Formular-Elementes herausbekommen
Judith Merges
- javascript
Ich habe folgendes Problem:
Ich habe eine Tabelle mit einer variablen Zeilenanzahl (for Schleife) die 4 Spalten hat:
In der 4. Spalte soll anhand der vorherigen Daten der Spalten 1-3 eine Summe berechnet werden. Dazu übergebe ich das Element der Spalten 1-3 bei Änderung (OnChange) an eine Funktion, die mir das Ergebnis berechnen soll.
Jetzt ist die Frage, wie kann ich den Index des unbenannten Elements bestimmen, um herauszufinden um welche Zeile es sich handelt und dort mein Ergebnis zu setzen.
Im Archiv (Oktober 2000) gab es dieses Thema mit dem Ergebnis, das dort die Elemente automatisch mit Namen versehen wurden, z.B. inputbox_1, inputbox_2, inputbox_3.
Momentan hilft mir das leider nicht weiter, da ich nicht weiß, wie ich dann in meiner Berechnungsfunktion die Zahlen aus den Namen ausgelesen bekomme. (Ausser eine eigene Funktion zu schreiben, die alles in einen string umwandelt, eine feste anzahl an zeichen löscht, den rest in einen integer umwandelt).
In selfhtml selber hab ich bis jetzt leider noch nichts gefunden.
*dieaufeinebesserelösunghoffende* Judith
Hallo,
Im Archiv (Oktober 2000) gab es dieses Thema mit dem Ergebnis, das dort die Elemente automatisch mit Namen versehen wurden, z.B. inputbox_1, inputbox_2, inputbox_3.
Momentan hilft mir das leider nicht weiter, da ich nicht weiß, wie ich dann in meiner Berechnungsfunktion die Zahlen aus den Namen ausgelesen bekomme.
Hier bietet sich in DOM-tauglichen Browsern document.getElementsByName("wert_eines_name_attributes") an. Daraus resultiert ein Objekt-Array mit den jweiligen benannten Elementen.
Beispiel:
<form action="">
<input type="text" name="inputbox_1"><br>
<input type="text" name="inputbox_1"><br>
<input type="text" name="inputbox_1"><br>
<input type="button" value="Test" onclick="Test()">
</form>
function Test()
{
var summe=0,obj=document.getElementsByName("inputbox_1");
for(i=0;i<obj.length;i++)
{
if(!isNaN(parseFloat(obj[i].value)))
{
summe+=parseFloat(obj[i].value);
}
}
alert(summe);
}
MfG, Thomas
Vielen Dank für den Tipp.
Das könnte mir wahrscheinlich wirklich weiterhelfen.
MfG
Judith