dynamische Tabellenerweiterung und Zeilennummerierung

erbse78

Grünschnabel
Hallo,

ich erzeuge mir in PHP eine Tabellenzeile.

PHP:
$i=0;
$tabelle='<tr><td><input name="m['.$i.'][farbe]" readonly="readonly"></td></tr>';
echo($tabelle);

damit sieht das Array so aus:

m[0][farbe]

Mittels innerHTML füge (per Buttonklick) neue Zeilen hinzu. Das klappt wunderbar. Aber ich möchte das $i weiterzählt.

Auszug aus dem JS-CODE:

Code:
 <?php $i++ ?>
 newTD.innerHTML = "<td><input name='m[<?php echo $i ?>][farbe]' ></td>";

leider zählt er immer nur bis 2.

Was mache ich falsch?
 
Moin Bohne :-)

Der PHP-"Counter" hilft dir da nicht weiter, da PHP nicht mit JS zusammenarbeitet.
Was du benötigst, ist eine Variable in JS, die du hochzählen kannst, hier mal ein simples Beispiel:
Code:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; 
                                charset=ISO-8859-1"   />
<meta name="author"             content="doktormolle" />
<meta name="date"               content="2008-11-01"  />
<title>Test</title>
</head>
<body>
Klick mich
<script type="text/javascript">
<!--
i=0;
document.onclick=function()
{
  input='<br><input name="m['+(i++)+'][farbe]" value="'+i+'">';
  document.getElementsByTagName('body')[0].innerHTML+=input;
}
//-->
</script>
</body>
</html>
 
Moin moin,

danke für deine Antwort.

Mir ist eine andere Idee gekommen wie es klappen kann:

PHP:
 var anzahl= 0;
 var anzahl=  document.getElementById("tbodyID").getElementsByTagName("tr").length;

 newTD.innerHTML = "<td><input name='m['+(anzahl)+'][farbe]' ></td>";

Aber es wird die variable gibt er nicht aus, ganz im gegenteil selbst das Attribut farbe erscheint nicht im Array.

Gruss
Die Bohne löl
 
Das ist auch ein guter Lösungsansatz :)

Funktionieren sollte er so:
Code:
var anzahl=  document.getElementById("tbodyID").getElementsByTagName("tr").length; 

newTD.innerHTML = '<td><input name="m['+(anzahl)+'][farbe]"></td>';

Beachte aber Folgendes dabei: du musst anzahl vor jedem Einfügen neu mit dem Wert belegen, da sich dieser nicht automatisch erhöht beim Einfügen.

Daher könntest du es gleich so notieren:
Code:
newTD.innerHTML = '<td><input name="m['+document.getElementById("tbodyID").getElementsByTagName("tr").length+'][farbe]"></td>';
 

Neue Beiträge

Zurück