Formular soll in Array schreiben...

köNICK

Grünschnabel
Hi Jungx,
Habe das Problem, hier die Beschreibung: Ich frage ab wieviele Textfelder in dem Formular erstellt werden sollen. Dabei sollen die Namen der erstellten Textfelder verschiedene Variablen sein (ein Array). Damit ich später in einer for-Schleife das ganze wieder auslesen kann...

PHP:
     anzahl= prompt("Geben Sie die Anzahl der Widerstände an...","");

     .............

     anzahl= parseFloat(anzahl);
     w = new Array(anzahl);
     for(i=1; i<=anzahl; i++) {
      document.write("r",i,": <input type= 'text' name ='w[i]' size='20'><br>");
     }

     .............
  
    function widers() {
     r = new Array(anzahl);
     for (i=1; i<=anzahl; i++) {
      r[i]= parseFloat(document.form1.w[i].value);
     }

Kann mir jemand sagen wie ich das HTML Formular in ein JS-Array schreiben lasse?
 
Gib allen Eingabefeldern den gleichen Namen, dann sind sie automatisch in einem Array.
Du kannst diesen Array dann ansprechen über
Code:
document.formularname.elements['feldname'];
Beispiel:
Code:
<html>
<head>
<title>test</title>
</head>
<body>
<form>
<script type="text/javascript">
<!--
anzahl= prompt("Geben Sie die Anzahl der Widerstände an...","");
if(isNaN(anzahl)){anzahl=0;}
anzahl= parseInt(anzahl);
for(i=1; i<=anzahl; i++)
  {
  document.write('r'+i+': <input type="text" name ="widerstand" size="20"><br>');
  }
function widers()
{
r=new Array('');
for(i=1; i<document.forms[0].elements['widerstand'].length; ++i)
   {
   r[i]=parseFloat(document.forms[0].elements['widerstand'][i-1].value);
   }
}
//-->
</script>
</form>
</body>
</html>
 
erstmal Danke für deine Hilfe, aber nun tat sich ein 2. Problem auf. Er gibt als Ergebnis Not a Number aus. Wenn ich bei meinen for-Schleifen für die Rechnungen aus <= einfach < mache gibt er zwar das Ergebnis aus aber beim Rechnen lässt er einen Widerstand, also ein Feld aus. weisst du warum? Hier der komplette Code:

PHP:
<html>
 <head>
  <title>Schöne Berechnung für Sie</title>
 </head>
  <script language="JavaScript">
   <!--
    anzahl= prompt("Geben Sie die Anzahl der Widerstände an...","");
   //-->
  </script>
 <body>
  <form name ="form1" action="berechnung.htm">
   Widerstand 1 + Widerstand 2<br>
   <script language="JavaScript">
    <!--
     if(isNaN(anzahl)){anzahl=0;}
     anzahl= parseFloat(anzahl);
     for(i=1; i<=anzahl; i++) {
      document.write("r",i,": <input type= 'text' name ='widerstand' size='20'><br>");
     }
    //-->
   </script>
   Art: <select name="art">
	<option value="artreihe">Reihe</option>
	<option value="artparallel">Parallel</option>
   </select><br>
   <input type="button" name="submit" value="Ausrechnen" onclick="widers()"><br>
   rg: <input type= "text" name ="wg" size="20">
  </form>
  <script language="JavaScript">
   <!--
    function widers() {
     r = new Array('');
     for (i=1; i<document.forms[0].elements['widerstand'].length; i++) {
      r[i]=parseFloat(document.forms[0].elements['widerstand'][i-1].value);
     }
     art= document.form1.art.value;
     rg= 1;
     if (art == "artreihe") {
      for(i=1; i<=document.forms[0].elements['widerstand'].length; i++) {
       rg= rg+r[i];
      }
      rg= rg-1;
     }
     else {
      for(i=1; i<=document.forms[0].elements['widerstand'].length; i++) {
       rg= rg + 1/r[i];
      }
      rg= 1/(rg-1);
     }
     document.form1.wg.value= rg.toFixed(3); 
    }
   //-->
  </script>
 </body>
</html>
 
Ich habs mal a bisserl umgeschrieben, die Arrays fangen jetzt immer bei 0 an...
die Werte werden auch nicht noch extra in nem neuen Array abgelegt-> ist ja nicht nötig, weil sie schon in einem
Array verfügbar sind.:
Code:
<html>
<head>
<title>Schöne Berechnung für Sie</title>
</head>
<body>
<form>
   Widerstand 1 + Widerstand 2<br>
<script type="text/javascript">
<!--
anzahl= prompt("Geben Sie die Anzahl der Widerstände an...","");
if(isNaN(anzahl)){anzahl=0;}
anzahl= parseInt(anzahl);
document.write('<table>');
for(i=0; i<anzahl; i++)
	{
	document.write('<tr><td>r'+eval(i+1)+': </td><td><input type="text" name ="widerstand" size="20"></td></tr>');
	}

function widers()
{
if(anzahl==0){return;}
rg=1;
for (i=0; i<document.forms[0].elements['widerstand'].length;++i)
	{
	r=parseFloat(document.forms[0].elements['widerstand'][i].value);
	if(isNaN(r))
		{
		alert('Bitte geben Sie einen numerischen Wert in Feld [r'+eval(i+1)+']ein!');
		document.forms[0].elements['widerstand'][i].focus();
		return;
		}

     	art= document.forms[0].art.options[document.forms[0].art.selectedIndex].value;
     		if (art == "artreihe")
     			{
     			rg+=r;
     			if(i==document.forms[0].elements['widerstand'].length-1)
     				{
     				rg= rg-1;
     				}
     			}
     		else
     			{
     			rg+= 1/r;
     			if(i==document.forms[0].elements['widerstand'].length-1)
     				{
     				rg= 1/(rg-1);
     				}
     			}
     	}
document.forms[0].wg.value= rg.toFixed(3);
}
//-->
</script>
<tr>
  <td colspan="2"style="text-align:center">Art:<br>
    <select name="art"onchange="widers()">
      <option value="artreihe">Reihe</option>
      <option value="artparallel">Parallel</option>
    </select>
  </td>
</tr>
<tr>
  <td colspan="2"style="text-align:center">
    <input type="button"value="Ausrechnen" onclick="widers()">
  </td>
</tr>
<tr>
  <td>
    rg:
  </td>
  <td>
    <input type= "text" name ="wg" size="20">
  </td>
</tr>
</table>
</form>
</body>
</html>
Ich hoff, s rechnet richtig, mein Physik-Unterricht ist schon ne Weile her :-)
 

Neue Beiträge

Zurück