javascript - 在动态创建的按钮javascript中调用函数
问题描述
我正在尝试创建一个带有 onClick 的按钮,该按钮调用带有签名 deleteEntry(entry) 的函数。但是,即使我在同一个函数中使用它,我也会收到一条错误消息,指出条目未定义。我尝试添加转义字符,但没有任何效果。有任何想法吗?
function addToTable(entry) {
var result = "<tr>"
result += "<td>" + entry.id + "</td>";
result += "<td>" + entry.title + "</td>";
result += "<td>" + entry.url + "</td>";
result += "<td><button class=\"btn\" onClick=\"deleteEntry(" + entry +
")\">Delete</button></td>";
result += "</tr>";
$("#table").append(result);
}
解决方案
您可以将按钮创建为 jQuery 对象并使用该on
方法来监听click
事件。然后,当附加事件侦听器时,将按钮附加到该行,就像函数中的其他元素一样。
检查下面的代码片段以查看它的实际效果。
// Dummy entry.
var entry = {
id: 0,
title: 'test',
url: 'http://url.com'
}
// Your AJAX call.
function deleteEntry(entry) {
console.log(entry);
}
function addEntryToTable(entry) {
var $id = $('<td>' + entry.id + '</td>');
var $title = $('<td>' + entry.title + '</td>');
var $url = $('<td>' + entry.url + '</td>');
var $button = $('<button class="btn">Delete</button>');
var $buttonWrap = $('<td></td>');
var $row = $('<tr></tr>');
// Add 'click' event listener to the button.
$button.on('click', function(event) {
deleteEntry(entry);
});
$buttonWrap.append($button)
$row.append($id, $title, $url, $buttonWrap);
$('#table').append($row);
}
addEntryToTable(entry);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="table"></table>
推荐阅读
- java - 2d 重力模拟器 - 较小的物体绕着较大物体的中心运行
- javascript - 扩展基于 socket.io 的 Web 应用程序时的限制因素?同时连接?消息大小?
- kubernetes - 将 Jaeger Collector 暴露给集群外的客户端
- c++ - PDF fin Acrobat 不显示简单文本,但适用于 Firefox 和 MicrosftEdge
- reactjs - 尝试将 NextJS 应用程序部署到 Docker 时捕获错误`SyntaxError: missing ) after argument list`
- php - 如何在不知道值的情况下仅从多个嵌套数组中的 PHP 数组获取值?
- google-chrome-extension - 未捕获的 ReferenceError:$ 未定义?不知道如何修复
- tensorflow - 我正在尝试为 arduino portenta 使用 tensorflow 微语音,但出现编译错误
- google-apps-script - 谷歌脚本:谷歌文档中一行文本中的多种样式
- python-3.x - discord.py 存在 praw 嵌入问题