如何在Javascript中动态创建的函数中传递参数?

如何在Javascript中动态创建的函数中传递参数?,javascript,html,typescript,Javascript,Html,Typescript,我已经创建了一个表单,在提交了要在表中显示的值后,我创建了一个表单。在表中有一个部分,我想在其中删除或编辑按钮上的特定用户。但是,当我将id传递给该函数时,我得到一个错误,表示发生了referenece错误 函数getEmployeeDetails(){ for(var i=0;i

我已经创建了一个表单,在提交了要在表中显示的值后,我创建了一个表单。在表中有一个部分,我想在其中删除或编辑按钮上的特定用户。但是,当我将id传递给该函数时,我得到一个错误,表示发生了referenece错误

函数getEmployeeDetails(){ for(var i=0;i 我在哪里犯的错误?

改变

  <button onclick='deleteUser( userArray[i].id )'>

差不多

 <button onclick='deleteUser('+userArray[i].id+')'>

在当前的尝试中,插入的不是userArray[i].id的值,而是变量userArray[i].id,这有点胡说八道

editUser函数的变化与此相同

  <button onclick='deleteUser( userArray[i].id )'>

差不多

 <button onclick='deleteUser('+userArray[i].id+')'>

在当前的尝试中,插入的不是userArray[i].id的值,而是变量userArray[i].id,这有点胡说八道


editUser函数的情况也一样,问题在于onClick事件中使用的字符串连接

您可以改为使用反勾号字符。 复制粘贴并检查以下代码

<html>
  <body>
    <table id="table"></table>
    <script>
      getEmployeeDetails();
      function getEmployeeDetails() {
        let userArray = [{ id: 1 }, { id: 2 }];
        var tr = "";
        for (var i = 0; i < userArray.length; i++) {
          tr +=
            `<td class="table-data">
              <button onclick="deleteUser(` +
                      userArray[i].id +
                      `)">Delete</button> || <button onclick="editUser( ` +
                      userArray[i].id +
                    `)">Edit</button>
             </td>`;
        }
        document.getElementById("table").innerHTML = tr;
      }
      function deleteUser(id) {
        console.log("delteuser", typeof id, id);
      }
      function editUser(id) {
        console.log("edit", id);
      }
    </script>
  </body>
</html>

getEmployeeDetails();
函数getEmployeeDetails(){
让userArray=[{id:1},{id:2}];
var tr=“”;
for(var i=0;i
问题在于在onClick事件中使用的字符串连接

您可以改为使用反勾号字符。 复制粘贴并检查以下代码

<html>
  <body>
    <table id="table"></table>
    <script>
      getEmployeeDetails();
      function getEmployeeDetails() {
        let userArray = [{ id: 1 }, { id: 2 }];
        var tr = "";
        for (var i = 0; i < userArray.length; i++) {
          tr +=
            `<td class="table-data">
              <button onclick="deleteUser(` +
                      userArray[i].id +
                      `)">Delete</button> || <button onclick="editUser( ` +
                      userArray[i].id +
                    `)">Edit</button>
             </td>`;
        }
        document.getElementById("table").innerHTML = tr;
      }
      function deleteUser(id) {
        console.log("delteuser", typeof id, id);
      }
      function editUser(id) {
        console.log("edit", id);
      }
    </script>
  </body>
</html>

getEmployeeDetails();
函数getEmployeeDetails(){
让userArray=[{id:1},{id:2}];
var tr=“”;
for(var i=0;i
您可以查看页面并检查以找出该按钮的错误。首先,您对
的定义格式不正确,它们是错误的。通过
'
更改当前的
'
。其次,将
onclick
属性从
onclick='deleteUser(userArray[i].id)
更改为
onclick='deleteUser(“+userArray[i].id+”)
。第三,避免公开公共函数的更好方法是私下注册侦听器,使用
元素或交叉浏览器回退。单击
可以检查页面并找出该按钮中的错误。首先,您对
的定义格式不正确,它们关闭错误。通过
'
更改当前的
'
。其次,将
onclick
属性从
onclick='deleteUser(userArray[i].id)
更改为
onclick='deleteUser(“+userArray[i].id+”)
。第三,避免公开公共函数的更好方法是私下注册侦听器,使用
元素或交叉浏览器回退。当我运行“getEmployeeDetails()”函数时,它会执行这两个函数,并在控制台中显示id。但是当我分别单击创建的表中的按钮时,它不会显示任何输出。在我调用它们之前,它实际上执行了这两个函数。然后,您的标记或js中出现了另一个错误,没有逻辑解释为什么它应该在单击之前执行这些函数。它工作不正常。当我运行“getEmployeeDetails()”函数时,它会执行这两个函数,并在控制台中显示id。但是当我分别单击创建的表中的按钮时,它不会显示任何输出。在我调用它们之前,它实际上执行了这两个函数。然后,您的标记或js中出现了另一个错误,没有逻辑解释为什么它应该在单击之前执行这些函数。@Souradip。如果答案在你的情况下有效,请接受。它可能会帮助其他在这里降落的人。@Souradip。如果答案在你的情况下有效,请接受。它可能会帮助其他降落在这里的人。