Я уверен, что вы можете делать это разными способами с помощью jQuery и т. Д., Но если вы ищете портативное DOM-совместимое решение, вы можете вернуться к основам, таким как:
<html>
<head>
<script type="text/javascript">
function removerows (tablebody) {
var rows = tablebody.getElementsByTagName("tr");
while (rows.length)
rows[0].parentNode.removeChild(rows[0]);
}
function addrows (tablebody, n) {
for (var i=0; i<n; i++) {
var row = document.createElement("tr");
var titlecell = document.createElement("td");
titlecell.appendChild(document.createTextNode("Row " + i));
row.appendChild(titlecell);
var cell = document.createElement("td");
var input = document.createElement("input");
input.setAttribute("type", "text");
input.setAttribute("name", "row["+i+"]");
cell.appendChild(input);
row.appendChild(cell);
tablebody.appendChild(row);
}
}
function change () {
var select = document.getElementById("numrows");
var index = select.selectedIndex
var n = parseInt(select.value);
var tablebody = document.getElementById("maintablebody");
removerows(tablebody);
addrows(tablebody, n);
}
</script>
</head>
<body>
<form method="POST" action="act.php">
<select id="numrows" name="numrows" onchange="change()">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<table id="maintable">
<tbody id="maintablebody">
<tr>
<td>Row 0</td>
<td><input type="text" name="row0" /></td>
</tr>
</tbody>
</table>
<input type="submit"/>
</form>
</body>
</html>
Здесь я использую W3C DOM Level 1 и HTML-расширения . Единственный нестандартный аспект - использование атрибута onchange
для элемента select
. Если вы хотите быть пуристом по этому поводу, вы можете использовать addElementListener
и attachEvent
.
Вставьте этот HTML-файл в файл и попробуйте его в Firefox и / или Internet Explorer, чтобы увидеть, выполняет ли он то, что вам нужно. Если вы не уверены, возвращайтесь с вопросами.