javascript - 我已经从 javascript 将表格附加到 html 中,但现在我想通过传递它们的 id 从字体真棒图标调用 onclick 函数
问题描述
我正在调用 onclick 函数,但它不起作用
for(var i =0; i<data.data.length; i++) {
console.log(data.data[i]._id);
var tr = document.createElement('tr');
tr.innerHTML = '<td>'+j+'</td><td>'+data.data[i].name+'</td>
<td>'+data.data[i].email+'</td><td>'+data.data[i].gender+'</td>
<td>'+data.data[i].gender+'</td><td>'+data.data[i].address+'</td>
<td>'+data.data[i].city+'</td><td>'+data.data[i].state+'</td>
<td>'+data.data[i].pin+'</td><td>'+data.data[i].country+'</td><td>
<span><i class = "fa fa-pencil" onclick="edit('+data.data[i]._id+')">
</i> | <i class="fa fa-trash"></i></span></td></tr>';
tbody.appendChild(tr);
j++;
}
解决方案
这是解决方案之一。
它不传递 ID,而是使用.parentElement
属性来获取图标附加到的整行。
在您的模板中,在<i>
标签内,我添加onclick="myFunction(event)"
了将myFunction(e)
在每个图标上执行的标签。
let data = {
data: [{
name: "Holmes",
email: "someemail@mail.com",
gender: "male",
address: "221B Baker Street",
city: "London",
state: "London",
pin: "x",
country: "England",
_id: 1
},
{
name: "Barry",
email: "someemail@mail.com",
gender: "male",
address: "221B Baker Street",
city: "London",
state: "London",
pin: "x",
country: "England",
_id: 2
},
{
name: "Holmes",
email: "someemail@mail.com",
gender: "male",
address: "221B Baker Street",
city: "London",
state: "London",
pin: "x",
country: "England",
_id: 3
}
]
}
let j = 0;
let tbody = document.querySelector('#myTable tbody');
for (var i = 0; i < data.data.length; i++) {
//console.log(data.data[i]._id);
var tr = document.createElement('tr');
tr.innerHTML = '<td>' + j + '<td>' + data.data[i].name + '</td><td>' + data.data[i].email + '</td><td>' + data.data[i].gender + '</td><td>' + data.data[i].gender + '</td><td>' + data.data[i].address + '</td><td>' + data.data[i].city + '</td><td>' + data.data[i].state + '</td><td>' + data.data[i].pin + '</td><td>' + data.data[i].country + '</td><td><span><i class = "fa fa-pencil" onclick="edit(' + data.data[i]._id + ')"></i> | <i class="fa fa-trash" onclick="myFunction(event)"></i></span></td></tr>';
tbody.appendChild(tr);
j++;
}
function myFunction(e) {
let target = e.target;
let targetSpan = target.parentElement;
let targetTd = targetSpan.parentElement;
let targetTr = targetTd.parentElement;
targetTr.style.background = "yellow";
//console.log(targetTr);
}
td {
border: 1px solid;
}
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" integrity="sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt" crossorigin="anonymous">
<table id="myTable">
<tbody></tbody>
</table>
推荐阅读
- python - 用字符串替换整数区间
- azure - 基于 blob 触发 VSTS/TFS 构建
- shell - 如何使用 getopts 声明一个不允许任何参数的选项
- python - 保持从 for loop pandas 返回的迭代项的索引
- javascript - 在 html 页面中显示文件内容会产生空字段
- spring-boot - 如何配置 Spring Boot 2 WebFlux 以使用 SSL?
- r - 根据因子中的数字对数据框中的数据进行排序
- vb6 - 在 Visual Basic 6.0 中使用 D-LINK dwm - 156 gsm 调制解调器发送短信
- java - 在使用 Web 视图的 onCreateView 期间,Android 应用程序未按预期设置变量
- maven - gitflow-maven-plugin:远程分支'origin/master'在本地分支'master'之前