Moin!
Keine Ahnung, ob es Dir was nutzt, aber man könnte das zum Beispiel so lösen, daß man den Eingabefeldern denselben Namen gibt. Sie lassen sich dann per getElementByName auffinden. Wenn der Name dann noch eine Zahl enthält und das Ergebnisfeld dieselbe Zahl bekommt, kann man das so implementieren:
<html>
<head>
<script language="JavaScript" type="text/JavaScript" >
function numerisch(feld)
{
if(feld.value == "")
return
// Feld analysieren
var test = parseFloat(feld.value)
// OK? Dann zurueck!
if(!isNaN(test))
{
// Ergebnis darstellen
feld.value = test
return
}
// Fehlermeldung
alert("Bitte nur numerische Angaben!")
// Eingabe selektieren und Eingabefokus setzen
feld.select()
feld.focus()
}
function rechne(feld)
{
var felder= document.getElementsByName( feld.name );
var produkt= 1;
for (var i=felder.length; i--; ) {
produkt*= felder[i].value;
}
var ergebnisName= feld.name.replace( /^\D+/, 'ergebnis' );
var ergebnis= document.getElementsByName( ergebnisName ).item(0);
ergebnis.value= produkt;
}
</script>
</head>
<body>
<form>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" name="zeile1"
onChange="numerisch(this); rechne(this)" /></td>
<td><input type="text" name="zeile1"
onChange="numerisch(this); rechne(this)" /></td>
<td><input type="text" disabled="disabled" name="ergebnis1" /></td>
</tr>
<tr>
<td><input type="text" name="zeile2"
onChange="numerisch(this); rechne(this)" /></td>
<td><input type="text" name="zeile2"
onChange="numerisch(this); rechne(this)" /></td>
<td><input type="text" disabled="disabled" name="ergebnis2"/></td>
</tr>
</table>
</form>
</body>
</html>
Man könnte natürlich auch vom übergebenen Feld die Parent Row ermitteln, d.h. so lange im DOM Tree hoch gehen, bis man di ROW hat und dann, ausgehend davon die Eingabefelder suchen. Dann wären die Namen vollkommen egal.
-- Skeeve