Babybaer Geschrieben 3. März 2003 Geschrieben 3. März 2003 Da ich kein Crack in JS bin und Du es vielleicht bist. Schau es Dir mal an. Ich habe mit Struts eine Dynamische Seite erstellt auf der sich mehre Objekte befinden und in der Anzahl auch variieren können. bis auf eine Tabelle. Ich versuche jetzt auf die Objekte der Tabelle zuzugreifen und merke das ich immer das falsche Objekt anspreche, ist mir auch klar warum 'document.TEST[eingabefeld].value'. Siehe auch mal Quellcode. Nun könnte es doch was geben mit dem ich über den Namen des Objekts das selbe Ergebnis bekomme wie im Quellcode unten erhalte. Hier ist das Beispiel was ich in die Dynamische Seite übernehmen wollte, aber leider an der document.TEST[xxxxxx :confused: xxxxxxxx].value immer wieder scheitere. Bitte mach mir auch ein kleines Beispiel damit ich es gut verstehe. Danke ******************************************************************* <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Test</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script language="JavaScript1.1"> function Check(Eingabe) { var nur_das ="0123456789.-"; //alle erlaubten Zeichen for (var i = 0; i < Eingabe.length; i++) { if (nur_das.indexOf(Eingabe.charAt(i))<0 ) return 1; } return 0; } function runden(x) //behebt den Bug beim addieren von double Werten { var rund = (Math.round(x * 100) / 100).toString(); return rund; } function addieren(eingabefeld,summandfeld,zielfeldname) { //eingabefeld = Index des Einbabefeld in der Form Achtung fängt bei 0 an!!! //summandfeld = Index des anderen Summanden //zielfeldname = Index des Zielfeldes in der Form var a = 0; var b = 0; var c = 0; if(Check(document.TEST[eingabefeld].value)==0) { a = document.TEST[eingabefeld].value; b = document.TEST[summandfeld].value; c = eval(a) - eval(; document.TEST[zielfeldname].value = runden©; }else { alert("Sie haben ein falsches Zeichen eingegeben! Nur diese Zeichen sind erlaubte: 0123456789.-"); document.TEST[eingabefeld].value = 0; } } function dreisatz(hundertProzent,feldEins,feldZwei,zielfeldname) { //hundertProzent = Index des Einbabefeld in der Form wo die 100% zufinden sind //feldEins = Index des Einbabefeld1 //feldZwei = Index des Einbabefeld2 //zielfeldname = Index des Zielfeldes in der Form var a = document.TEST[hundertProzent].value; //100% var b = document.TEST[feldEins].value; //Einbabefeld1 var c = document.TEST[feldZwei].value; //Einbabefeld2 var d = 0; //Ergebnis if(Check©==1) { alert("Sie haben ein falsches Zeichen eingegeben! Nur diese Zeichen sind erlaubte: 0123456789.-"); document.TEST[feldZwei].value = 0; c = 0; } d = (eval( + eval©) / a ; d = (d - 1)* 100; if(d=="NaN") { document.TEST[zielfeldname].value = 0; }else document.TEST[zielfeldname].value = runden(d); } </script> </head> <body> <form name="TEST" method="post" action=""> <table width="77%" border="1" cellspacing="0" bordercolor="#000000"> <tr> <td><strong>Plan</strong></td> <td><strong>Ist</strong></td> <td><strong>Rest(Diff)</strong></td> <td><strong>Rest(Plan)</strong></td> <td><strong>Abweichung in %</strong></td> </tr> <tr> <td><input type="text" name="textfield1" value=0 onChange="addieren(0,1,2);dreisatz(0,1,3,4)"></td> <td><input type="text" name="textfield2" value=0 onChange="addieren(1,0,2)"></td> <td><input type="text" name="textfield3" value=0 readonly></td> <td><input type="text" name="textfield4" value=0 onChange="dreisatz(0,1,3,4)"></td> <td><input type="text" name="textfield5" value=0 readonly></td> </tr> <tr> <td><input type="text" name="textfield6" value=0 onBlur="addieren(5,6,7);dreisatz(5,6,8,9)"></td> <td><input type="text" name="textfield7" value=0 onBlur="addieren(6,5,7)"></td> <td><input type="text" name="textfield8" value=0 readonly></td> <td><input type="text" name="textfield9" value=0 onBlur="dreisatz(5,6,8,9)"></td> <td><input type="text" name="textfield10" value=0 readonly></td> </tr> </table> </form> </body> </html> Zitieren
Babybaer Geschrieben 4. März 2003 Autor Geschrieben 4. März 2003 Bin vielleicht doch ein Crack :marine Hier kommt die Löschung, die auch auf meiner dynamischen Seite funkt: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Test</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script language="JavaScript1.1"> function Check(Eingabe) { var nur_das ="0123456789.-"; //alle erlaubten Zeichen for (var i = 0; i < Eingabe.length; i++) { if (nur_das.indexOf(Eingabe.charAt(i))<0 ) return 1; } return 0; } function runden(x) //behebt den Bug beim addieren von double Werten { var rund = (Math.round(x * 100) / 100).toString(); return rund; } function addieren(eingabefeld,summandfeld,zielfeldname) { //eingabefeld = Index des Einbabefeld in der Form Achtung fängt bei 0 an!!! //summandfeld = Index des anderen Summanden //zielfeldname = Index des Zielfeldes in der Form var a = 0; var b = 0; var c = 0; if(Check(document.getElementsByName(eingabefeld)[0].value)==0) { a = document.getElementsByName(eingabefeld)[0].value; b = document.getElementsByName(summandfeld)[0].value; c = eval(a) - eval(; alert(a +" , " + b +" , " + c ); document.getElementsByName(zielfeldname)[0].value = runden©; }else { alert("Sie haben ein falsches Zeichen eingegeben! Nur diese Zeichen sind erlaubt: 0123456789.-"); document.getElementsByName(eingabefeld)[0].value = 0; } } function dreisatz(hundertProzent,feldEins,feldZwei,zielfeldname) { //hundertProzent = Index des Einbabefeld in der Form wo die 100% zufinden sind //feldEins = Index des Einbabefeld1 //feldZwei = Index des Einbabefeld2 //zielfeldname = Index des Zielfeldes in der Form var a = document.getElementsByName(hundertProzent)[0].value; //100% var b = document.getElementsByName(feldEins)[0].value;//Einbabefeld1 var c = document.getElementsByName(feldZwei)[0].value; //Einbabefeld2 var d = 0; //Ergebnis if(Check©==1) { alert("Sie haben ein falsches Zeichen eingegeben! Nur diese Zeichen sind erlaubt: 0123456789.-"); document.getElementsByName(feldZwei)[0].value = 0; c = 0; } d = (eval( + eval©) / a ; d = (d - 1)* 100; if(d=="NaN") { document.getElementsByName(zielfeldname)[0].value = 0; }else document.getElementsByName(zielfeldname)[0].value = runden(d); } </script> </head> <body> <form name="TEST" method="post" action=""> <table width="77%" border="1" cellspacing="0" bordercolor="#000000"> <tr> <td><strong>Plan</strong></td> <td><strong>Ist</strong></td> <td><strong>Rest(Diff)</strong></td> <td><strong>Rest(Plan)</strong></td> <td><strong>Abweichung in %</strong></td> </tr> <tr> <td><input type="text" name="0" value=0 onBlur="addieren(0,1,2);dreisatz(0,1,3,4)"></td> <td><input type="text" name="1" value=0 onBlur="addieren(0,1,2)"></td> <td><input type="text" name="2" value=0 readonly></td> <td><input type="text" name="3" value=0 onBlur="dreisatz(0,1,3,4)"></td> <td><input type="text" name="4" value=0 readonly></td> </tr> <tr> <td><input type="text" name="5" value=0 onBlur="addieren(5,6,7);dreisatz(5,6,8,9)"></td> <td><input type="text" name="6" value=0 onBlur="addieren(5,6,7)"></td> <td><input type="text" name="7" value=0 readonly></td> <td><input type="text" name="8" value=0 onBlur="dreisatz(5,6,8,9)"></td> <td><input type="text" name="9" value=0 readonly></td> </tr></table> </form> </body> </html> Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.