<html>
<body>
<table>
<tbody id="tblBody">
</tbody>
</table>
<script>
let t = [{a:1, b:2},{a:3, b:4}]
populate(t)
function populate(t) {
let tbody = document.getElementById('tblBody')
let tableHtml = ''
t.forEach(obj => {
tableHtml += `
<tr>
<td>${obj.a}</td>
<td>${obj.b}</td>
<td>
<button onclick= "editT(${JSON.stringify(obj)})">Edit</button>
</td>
</tr>
`
});
tbody.innerHTML = tableHtml
}
const editT = (obj) => {
let parsedObj = JSON.parse(obj)
console.log(parsedObj)
}
</script>
</body>
</html>
**但是我无法将obj设置为函数editT()的参数。**有没有办法将object设置为参数,以便通过单击动态表中的按钮来编辑每个对象。实际对象有许多键值对。
1条答案
按热度按时间bttbmeg01#
一种方法是将对象(字符串化)索引传递给onclick函数。
第一个
编辑
我不喜欢将param编码为
editT
的想法,因为这会产生一个参数的副本。如果editT
真的要“编辑t”,t
必须作为param传递或者位于封闭作用域中。无论如何,如果OP真的希望通过字符串编码获得所选对象的副本,这里有一个代码片段可以做到这一点。OP中的错误是由于将onclick属性分配给字符串而不是函数造成的。
第一次