javascript - 为什么表格内的按钮在单击时没有获得 td 的值?
问题描述
我填了一张表,实际上是一张jquery数据表。我通过循环将其附加到td创建了一个按钮。该按钮成功调用showmsg()函数,但无法从其所在行的特定td获取值。
它说undefined。
代码:
填充表格并在其中创建一个 EDIT 按钮的函数。
function fillServicesGrid()
{
var url = '@Url.Action("GetServices")';
var data = ''
$.get(url, data, function (response) {
$("#tblServices").html("");
$.each(response, function (i, val) {
$("#tblServices").append($('<tr>').append($('<td id="tdServiceID">').html(val.ServiceID)).append($('<td>').html(val.ServiceName)).append($('<td>').html(val.ServicePrice)).append($('<button type="button" class="btn btn-primary btnEdit" onclick="showmsg();">Edit</button>')));
});
});
$('#tblServices').DataTable();
$('.sorting_asc, .sorting').addClass('datatable-headerrow');
$('.paginate_button.current').addClass('pagination-buttons');
$('.dataTables_filter, .dataTables_length').hide();
}
btnEdit 调用的函数以获取 td #tdService 的文本
function showmsg()
{
var serviceID = $(this).closest('tr').find('#tdServiceID').text();
alert(serviceID);
$("#ServiceName").val("Tester");
$("#ServicePrice").val("Testing");
}
解决方案
由于您对 html 元素使用 Id,因此它们应该是唯一的。尝试在您的each
函数中执行以下操作:
$("#tblServices").append($('<tr>').append($('<td>').attr('id',"tdServiceID" + i).html(val.ServiceID)).append($('<td>').html(val.ServiceName)).append($('<td>').html(val.ServicePrice)).append($('<button type="button" class="btn btn-primary btnEdit" onclick="showmsg(\'' + i + '\');">Edit</button>')));
(将 Id 设置为 tdServiceID 附加迭代的索引)请注意,我们在 showmsg 函数中传递了“i”,现在可以变为
function showmsg(i)
{
var serviceID = $('#tdServiceID'+i).text();
alert(serviceID);
$("#ServiceName").val("Tester");
$("#ServicePrice").val("Testing");
}
它似乎正在工作jsFiddle
不确定该方法中的最后两行应该做什么
推荐阅读
- javascript - 在模板中序列化 Django 用户:Group 类型的对象不是 JSON 可序列化的
- customization - 从潜在客户创建联系人时设置默认值
- ios - 是否可以以编程方式检索安装在 mac os 上的应用程序图标?
- google-bigquery - Bigquery UDF 函数 - 将查询作为参数发送以执行 min/max/std_dv/count_of nulls 等函数
- jquery - 如何为滑块创建点击功能?
- c# - Blazor 如何修复 IMediator InvalidOperationException 无法从根提供程序解析,因为它需要范围服务 IDbContext
- azure-blob-storage - SQL Server 托管备份到 Azure
- r - 如何更改逐字文本输出的填充颜色
- python - 如何将聚类简单图转换为区域着色图?
- node.js - 在程序开始前 30 分钟从服务器通知用户