繁体   English   中英

为什么这个 onClick function 没有使用 Javascript 正确创建?

[英]Why this onClick function is not being created properly using Javascript?

我在调用 JS function 时创建了新按钮,但我认为我在 onclick 事件处理程序中对 object 进行字符串化的方式有问题,我将其作为参数传递:

...
var edit_button = '<button type="button" id="buttons" onclick="edit_admin_request(this,\'' + JSON.stringify(edit_admin_object) + '\')" name="edit_admin">Edit</button>';
var rowNode = myTable.row(window.rowindex).data([edit_button]).draw();
...

创建此按钮时,当我尝试单击它时,它根本不会调用edit_admin_request(this_,data_) function。

如果我尝试传递一个简单的字符串而不是字符串化的 object onclick="edit_admin_request(this,\'' + ["a string inside if an array"] + '\')" ,这可行,我可以调用edit_admin_request(this_,data_) function。

我不明白为什么会这样?!

更新:这是我显示按钮的行(注意:我使用的是动态表,所以这一行在 foreach 循环内):

 <td>
   <div id="edit_button_row" class="edit_button_row">
     <button type="button" class="edit_admin" id="buttons" onclick='edit_admin_request(this,<?php echo json_encode($user); ?>)' name="edit_admin">Edit</button>
   </div>
 </td>

因此,在阅读评论后,我将发布我的发现作为答案

  1. 在隐藏的单元格中添加用户名,以确保任何引号或特殊字符不会弄乱数据的传递。
    <td class="datacell"><?php echo $user["name"]; ?></td>
  2. 给单元格一个 class
  3. 添加按钮,给它一个 class
  4. 将此代码添加到页面,其中 tableID 是表或 tbody 的 id

$("#tableID").on("click",".edit-admin",function(e) { 
  const $row = $(this).closest("tr"); 
  const data = $row.find(".datacell").text().trim(); // in case the PHP addes spaces
  edit_admin_request(this,data);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM