javascript - 动态添加/编辑表格 HTML 表格行
问题描述
这让我发疯,我整天都在尝试各种 Javascript 和代码,但无法让它工作,所以希望这里有人能指出我正确的方向。
这是我当前的表,我想创建一个“高级”选项,允许每行添加其他详细信息
因此,如果您单击“高级”,它将扩展到这些功能,并允许您添加或删除其他行
这是我试图通过扩展视图获得的表格代码:
<table border="0" align="center" cellpadding="5" cellspacing="0">
<tbody>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Hourly Rate</th>
<th>Contract Until</th>
<th>Advanced Details</th>
</tr>
<tr>
<td bgcolor="#F2F2F2" style="text-align: center">John</td>
<td bgcolor="#F2F2F2" style="text-align: center">Smith</td>
<td bgcolor="#F2F2F2" style="text-align: center">$
<input type="number" name="number57" id="number57"></td>
<td bgcolor="#F2F2F2" style="text-align: center"><input type="date" name="date" id="date"></td>
<td bgcolor="#F2F2F2" style="text-align: center"><input type="button" name="button" id="button" value="Advanced"></td>
</tr>
<tr>
<td bgcolor="#F2F2F2" style="text-align: center"> </td>
<td bgcolor="#F2F2F2" style="text-align: center">
<label for="select">Project ID:</label>
<select name="select" id="select">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select></td>
<td bgcolor="#F2F2F2" style="text-align: center">$
<input type="number" name="number57" id="number57"></td>
<td bgcolor="#F2F2F2" style="text-align: center"><input type="date" name="date" id="date"></td>
<td bgcolor="#F2F2F2" style="text-align: center"><input type="button" name="button" id="button" value="Add"> /
<input type="button" name="button4" id="button4" value="Remove"></td>
</tr>
<tr>
<td style="text-align: center">Bob</td>
<td style="text-align: center">Jones</td>
<td style="text-align: center">$
<input type="number" name="number58" id="number58"></td>
<td style="text-align: center"><input type="date" name="date2" id="date2"></td>
<td style="text-align: center"><input type="button" name="button2" id="button2" value="Advanced"></td>
</tr>
<tr>
<td bgcolor="#F2F2F2" style="text-align: center">Tom</td>
<td bgcolor="#F2F2F2" style="text-align: center">Collins</td>
<td bgcolor="#F2F2F2" style="text-align: center">$
<input type="number" name="number59" id="number59"></td>
<td bgcolor="#F2F2F2" style="text-align: center"><input type="date" name="date3" id="date3"></td>
<td bgcolor="#F2F2F2" style="text-align: center"><input type="button" name="button3" id="button3" value="Advanced"></td>
</tr>
<tr>
<td bgcolor="#F2F2F2" style="text-align: center"> </td>
<td bgcolor="#F2F2F2" style="text-align: center">
<label for="select">Project ID:</label>
<select name="select" id="select">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select></td>
<td bgcolor="#F2F2F2" style="text-align: center">$
<input type="number" name="number57" id="number57"></td>
<td bgcolor="#F2F2F2" style="text-align: center"><input type="date" name="date" id="date"></td>
<td bgcolor="#F2F2F2" style="text-align: center"><input type="button" name="button" id="button" value="Add"> /
<input type="button" name="button4" id="button4" value="Remove"></td>
</tr>
<tr>
<td bgcolor="#F2F2F2" style="text-align: center"> </td>
<td bgcolor="#F2F2F2" style="text-align: center">
<label for="select">Project ID:</label>
<select name="select" id="select">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select></td>
<td bgcolor="#F2F2F2" style="text-align: center">$
<input type="number" name="number57" id="number57"></td>
<td bgcolor="#F2F2F2" style="text-align: center"><input type="date" name="date" id="date"></td>
<td bgcolor="#F2F2F2" style="text-align: center"><input type="button" name="button" id="button" value="Add"> /
<input type="button" name="button4" id="button4" value="Remove"></td>
</tr>
<tr>
<td style="text-align: center"> </td>
<td style="text-align: center"> </td>
<td style="text-align: center"> </td>
<td style="text-align: center"> </td>
<td style="text-align: center"><input type="submit" name="submit" id="submit" value="Submit"></td>
</tr>
</tbody>
</table>
解决方案
没有一些示例代码很难提出建议,但我认为这有类似的作用。
https://jsfiddle.net/3gkwoe7j/4/
关于动态添加元素的一个注意事项,您需要将事件侦听器附加到 DOM 中的静态内容,然后使用选择器。(我假设您使用的是 jQuery,因为您在问题中标记了它)所以在我的示例中:
$('.table')
.on('click', 'button.advanced.toggle', function() {
$(this)
.text(this.textContent === "LESS" ? "ADVANCED" : "LESS")
.parents('.person')
.find('.advanced.section').toggle();
})
我将点击侦听器绑定到.table
,然后按选择器过滤button.advanced.toggle
。
希望有帮助。
推荐阅读
- android - TextView 文本不显示
- ios - fancybox3 图像按钮 iframe youtube 视频
- visual-studio-code - 使用户能够减小活动栏上的图标大小
- javascript - 如何隐藏属于锚点的 i 元素
- python - 如何在 python 中提高图像的分辨率 - 一种可能的解决方案?
- android - 如何在 MainActivity 类中调用非活动类?
- ruby - 使用 Thin 作为简单 rhtml 服务器的简单 Ruby 服务器设置(如 Webrick)
- javascript - 更新时停止文本“抖动”
- java - 缺少 JavaFX 运行时组件,需要在 powershell 中为 openjfx 11 运行此应用程序
- php - PHP注入未在文本框中显示回声