Aloha!
Die Formularfelder so:
<?php
echo"<input type='text' name='feld[]' value='$feld' >";
Hier ist dein Denkfehler. Du erzeugst in HTML ein Texteingabefeld. Diese Felder sind in Javascript mit
document.forms[index].elements[index].value
oder
document.forms['name'].elements['name'].value
oder schnell mit
document.formularname.feldname.value
anzusprechen.
Was machst du hier: Du erzeugst solch ein Feld, welches einen etwas komischen Namen (wegen der '[]') hat, aber ansonsten vollkommen "normal" ist.
Der Zugriff auf dieses Feld erfolgt immer noch (und wegen der Klammern zwangweise) über Variante 1 oder 2. Variante 3 funktioniert nicht, da du die Klammern des Namens angeben musst, diese aber für Javascript besondere Bedeutung haben.
Testcode:
<html>
<head>
<title>PHP-Feldnamen-Test</title>
</head>
<body>
<form name="testform" action="egal.html">
<input type="text" name="phpname[]" value="Feldinhalt">
</form>
<a href="javascript:alert(document.testform.elements['phpname[]'].value">Value anzeigen</a>
</body>
</html>
Klick auf den Link zeigt den Feldinhalt des Feldes an.
Definierst du mehrere Eingabefelder mit dem gleichen Namen, dann legt Javascript automatisch ein Array an, um auf jedes einzelne Feld zuzugreifen.
Testcode:
<html>
<head>
<title>PHP-Feldnamen-Test</title>
</head>
<body>
<form name="testform" action="egal.html">
<input type="text" name="phpname[]" value="Feldinhalt">
<input type="text" name="phpname[]" value="Feldinhalt2">
</form>
<a href="javascript:alert(document.testform.elements['phpname[]'][1].value">Value anzeigen</a>
</body>
</html>
Der Link zeigt jetzt den Inhalt des _zweiten_ Feldes an (Index [1]). Beachte, dass der Feldname selbst eckige Klammern enthält, die aber _nicht_ für den Zugriff auf das JS-Array verwendet werden können.
Javascript kennt für die Anzahl der Elemente in einem Array die Eigenschaft length. Mit document.testform.elements['phpname[]'].length kriegst du raus, wieviele Felder existieren (wobei vollkommen egal ist, ob die von PHP erzeugt wurden, oder vom lieben Gott persönlich), und kannst Schleifen durchlaufen, um zu addieren.
Beachte: Wenn du Probleme in Javascript hast, haben diese absolut nichts mit PHP zu tun - nur mit dem von PHP generierten Code. Benutze die Quelltextanzeige des Browsers (und möglicherweise eine abgespeicherte, PHP-freie Seite), um das Javascript-Problem zu lösen. Ändere dann deinen PHP-Code so, dass eine fehlerfreie Seite erzeugt wird.
Wenn man diese Technik des Verknüpfens von Javascript und PHP gut beherrscht, kann man ziemlich coole Sachen machen, die Javascript allein niemals beherrschen würde. Dynamisch generierter Javascript-Code ist IMHO so ziemlich die interessanteste Sache für Benutzeroberflächen, die ich mir denken kann - aber aufgrund der unklaren Trennung der Codeanteile auch ziemlich verwirrend für Einsteiger.
- Sven Rautenberg