javascript - 如何在 JS 中动态创建的表格中添加可点击的文本
问题描述
我有一个基于 JSON 响应的动态生成的表。该表有 3 列 - 1 表示 S.No.,2 表示名称,3 应该有两个文本链接,如Edit | Delete
.
Edit
并且Delete
应该可以单独单击,并且单击它们后,我想检索相应的 JSON 对象以便能够进一步处理它。
例子 -
JSON响应:
[
{
"id": 2,
"owner": 1,
"name": "General"
},
{
"id": 3,
"owner": 1,
"name": "Specific"
},
{
"id": 10,
"owner": 1,
"name": "One more"
},
{
"id": 11,
"owner": 1,
"name": "Test Category"
}
]
JS 从上面的 JSON 数据生成表:
function populateTable(data) {
const resLen = data.length;
var col = [];
col.push("S. No.");
for (var i=0; i<data.length; i++) {
for (var key in data[i]) {
if (col.indexOf(key) === -1 && key == "name") {
col.push(key);
}
}
}
col.push(" ");
var table = document.createElement("table");
var tr = table.insertRow(-1);
for (var i=0; i<col.length; i++) {
var th = document.createElement("th");
if (col[i] == "name") {
th.innerHTML = "Name";
tr.appendChild(th);
} else {
th.innerHTML = col[i];
tr.appendChild(th);
}
}
for (var i=data.length-1; i>=0; i--) {
tr = table.insertRow(-1);
for (var j=0; j<col.length; j++) {
var tabCell = tr.insertCell(-1);
if (j == 0) {
tabCell.innerHTML = ((data.length-1) - i)+1;
} else if (j == 2) {
tabCell.innerHTML = "Delete"
} else {
tabCell.innerHTML = data[i][col[j]];
}
}
}
var divContainer = document.getElementById("categoriesTable");
divContainer.innerHTML = "";
divContainer.appendChild(table);
}
我想在第三列(currenlty 所在Delete
的位置)中添加可点击的文本,这样当我点击文本时,我可以检索其相关的 JSON 对象并提取id
. 我想用普通的 JS 和 HTML 来做这件事。
解决方案
起初我建议你使用像 jquery( https://jquery.com ) 这样的辅助库来过上更好的生活,但如果你更喜欢纯 javascript 将事件附加到动态创建的元素,你的答案是事件委托,在这篇文章中得到了回答: 将事件附加到javascript中的动态元素
使用 jquery:
- 在 td 标签内,使用按钮或链接标签作为删除按钮
- 添加一个带有引用属性的 css 类(class="btn_delete") 以保留行 ID(data-rowid="25")
- 添加jquery代码
$(document).on('click','.btn_delete',function(){var rowid=$(this).data('rowid');//做点别的... });
推荐阅读
- iphone - 如何解决 xcode 10.1 无法启动应用程序?
- python - before_action ...仅限:如何在python烧瓶中执行此操作?
- python-3.x - 弹性 beantalk 上的 502 bad gateway 错误
- laravel - 在 Cron 作业 Laravel 5.7 中检索用户 ID
- mysql - 如何将 order by 和 group by 结合在一起?条件:按一列按另一列分组
- c# - 虽然我可以使用 C# 代码读取,但在使用 c# 创建的注册表编辑器中找不到键
- java - 成员字段位于 JVM 中的什么位置?
- c# - 如何使用 ITaskbarList3.RegisterTab 在任务栏弹出窗口内的选项卡中显示图像?
- python-3.x - 如何保留来自 pandas DataFrame 的数据的百分比?
- html - 当网格项目在移动视图中折叠时避免双重网格间隙