javascript 如何将数组的每个对象设置为动态表行中调用的函数的参数?

50few1ms  于 2022-11-27  发布在  Java
关注(0)|答案(1)|浏览(124)
<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设置为参数,以便通过单击动态表中的按钮来编辑每个对象。实际对象有许多键值对。

bttbmeg0

bttbmeg01#

一种方法是将对象(字符串化)索引传递给onclick函数。
第一个

编辑

我不喜欢将param编码为editT的想法,因为这会产生一个参数的副本。如果editT真的要“编辑t”,t必须作为param传递或者位于封闭作用域中。
无论如何,如果OP真的希望通过字符串编码获得所选对象的副本,这里有一个代码片段可以做到这一点。OP中的错误是由于将onclick属性分配给字符串而不是函数造成的。
第一次

相关问题