Javascript 为什么不';t表中的按钮在单击时获取td值?

Javascript 为什么不';t表中的按钮在单击时获取td值?,javascript,jquery,html,html-table,datatables,Javascript,Jquery,Html,Html Table,Datatables,我已经填充了一个表,实际上是一个jquery数据表。我创建了一个按钮,通过循环将其附加到td。该按钮成功调用了showmsg()函数,但无法从其所在行的特定td中获取值 它表示未定义 代码: 函数填充表格并在其中创建编辑按钮 function fillServicesGrid() { var url = '@Url.Action("GetServices")'; var data = '' $.get(

我已经填充了一个表,实际上是一个jquery数据表。我创建了一个按钮,通过循环将其附加到td。该按钮成功调用了showmsg()函数,但无法从其所在行的特定td中获取值

它表示未定义

代码:

函数填充表格并在其中创建编辑按钮

 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();

        }

因为您对html元素使用ID,所以它们应该是唯一的。尝试在
每个功能中执行以下操作:

 $("#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>')));
它似乎起作用了


不确定该方法的最后两行应该做什么

这段代码是在razor还是js文件中?id是唯一的吗?什么叫showmsg-这是你认为的吗?请创建一个应用于多个DOM元素时不应使用ID的。尝试更改为函数showmsg中的和,var serviceID=$(this).closest('tr').find('.tdServiceID').text()@埃米特:不是working@Pete:它在剃须刀里,在本地。是的,id是唯一的,我一直在尝试解决它,但没有办法,请帮助我。非常感谢,它有效,但我仍然不明白如何解决它:你不明白的是什么?也许我们可以继续聊天?
 $("#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>')));
function showmsg(i)
{
    var serviceID = $('#tdServiceID'+i).text();
    alert(serviceID);

    $("#ServiceName").val("Tester");
    $("#ServicePrice").val("Testing");
}