如何解决为什么未使用Java脚本正确创建此onClick函数?
我在调用JS函数时正在创建新的按钮,但是我认为我在作为参数传递的onclick事件处理程序中对对象进行字符串化的方式有问题:
...
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_)
函数。
如果我尝试传递一个简单的字符串而不是一个字符串化的对象onclick="edit_admin_request(this,\'' + ["a string inside if an array"] + '\')"
,则可以使用edit_admin_request(this_,data_)
函数。
我不明白为什么会这样?!
更新: 这是我显示按钮的行(注意:我正在使用动态表,因此该行位于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>
解决方法
因此,在阅读评论后,我会将发现的内容作为答案
- 在隐藏的单元格中添加用户名,以确保任何引号或特殊字符不会弄乱数据的传递。
<td class="datacell"><?php echo $user["name"]; ?></td>
- 给单元格一个类
- 添加按钮,为其提供一个类
- 将此代码添加到页面中,其中tableID是表的ID或tbody
$("#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);
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。