У меня есть таблица, где я могу динамически добавлять строки. Я хочу получить данные в каждой строке в php-массив, когда я отправлю кнопку сохранения. Может понравиться кому-нибудь помочь мне в этом. Я новичок в java-скрипте и очень мало знаю об этом. Спасибо!
<HTML> <HEAD> <TITLE> Add/Remove dynamic rows in HTML table </TITLE> <SCRIPT language="javascript"> function addRow(tableID) { var table = document.getElementById(tableID); var rowCount = table.rows.length; var row = table.insertRow(rowCount); var cell1 = row.insertCell(0); var element1 = document.createElement("input"); element1.type = "checkbox"; element1.name="chkbox[]"; cell1.appendChild(element1); var cell2 = row.insertCell(1); cell2.innerHTML = rowCount + 1; var cell3 = row.insertCell(2); var element2 = document.createElement("input"); element2.type = "text"; element2.name = "txtbox[]"; cell3.appendChild(element2); } function deleteRow(tableID) { try { var table = document.getElementById(tableID); var rowCount = table.rows.length; for(var i=0; i<rowCount; i++) { var row = table.rows[i]; var chkbox = row.cells[0].childNodes[0]; if(null != chkbox && true == chkbox.checked) { table.deleteRow(i); rowCount--; i--; } } }catch(e) { alert(e); } } </SCRIPT> </HEAD> <BODY> <INPUT type="button" value="Add Row" onClick="addRow('dataTable')" /> <INPUT type="button" value="Delete Row" onClick="deleteRow('dataTable')" /> <form action="" method="post"> <?php $i= 1; ?> <TABLE id="dataTable" width="350px" border="1"> <TR> <TD><INPUT type="checkbox" name="chk"/></TD> <TD> 1 </TD> <TD> <INPUT type="text" name="harsh"/> </TD> </TR> </TABLE> <input name="saveNewSales" type="submit" value="Save" id="button2" style="text-align:center"/> </form> <?php foreach($_POST as $name => $content) { // Most people refer to $key => $value echo "The HTML name: $name <br>"; echo "The content of it: $content <br>"; } ?> </BODY> </HTML>
Ваш код прав, просто небольшое изменение там
<TR> <TD><INPUT type="checkbox" name="chk"/></TD> <TD> 1 </TD> <TD> <INPUT type="text" name="<?php echo $i; ?>"/> </TD> </TR>
заменить этим кодом
<TR> <TD><INPUT type="checkbox" name="chkbox[]"/></TD> <TD> 1 </TD> <TD> <INPUT type="text" name="txtbox[]"/> </TD> </TR>
и ваша работа заканчивается
var rows=getElementsByTagName("tr"); var noOfRows=rows.length; for(int i=0;i<noOfRows;i++){ var html=rows[i].innerhtml; /*a single row's inner html say (<td>apple</td><td>25</td>)*/ var td=html.match(/(?!<td>)([\s*\w*]*)[^<\/td>]/g); /** td[0] is 'apple', td[1] is '25' **/ }