Zum Inhalt springen

Objekte über den Namen ansprechen


Babybaer

Empfohlene Beiträge

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(B);

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(B) + 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>

Link zu diesem Kommentar
Auf anderen Seiten teilen

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(B);

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(B) + 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>

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...