Javascript 修改对象后如何更新html中的数据?

Javascript 修改对象后如何更新html中的数据?,javascript,jquery,html,Javascript,Jquery,Html,我有此功能,可通过ID修改现有对象: var updateUser = function () { var id = $("#userId").val(); var user = findObjectById(id); user.username = $('#username').val(); user.level = $('#level').val(); user.regstatus = $('#regstatus').val(); us

我有此功能,可通过ID修改现有对象:

   var updateUser = function () {
    var id = $("#userId").val();
    var user = findObjectById(id);

    user.username = $('#username').val();
    user.level = $('#level').val();
    user.regstatus = $('#regstatus').val();
    user.regdate = $('#regdate').val();



    $(".table").show();
    $("#newUser").show();
    $("#userForm").hide();
    $("#updateUser").hide();

}; 
如何用修改后的数据替换HTML中的当前数据

这是我创建行的函数:

 var buildRow = function (data) {
    var html = '<tr id = ' + data.id + '>' +
        '<td>' + data.username + '</td>' +
        '<td>' + data.level + '</td>' +
        '<td>' + data.regstatus + '</td>' +
        '<td>' + data.regdate + '</td>' +
        '<td>' +
        '<button class="btn btn-info"value="Edit" onclick="userList.editUser(' + data.id + ')">Edit</button>' + ' ' +
        '<button class="btn btn-danger" value="Delete" onclick="userList.deleteRow(' + data.id + ')">Delete</button>' + '</td>' +
        '</tr>';


    $("#users").append(html);

};
var buildRow=函数(数据){
var html=''+
''+data.username+''+
''+data.level+''+
''+data.regstatus+''数据+
''+data.regdate+''数据+
'' +
'编辑'+''+
'删除'+''+
'';
$(“#用户”).append(html);
};

p.S我想在相同的位置更新,我的id应该相同。

据我所知,您想在运行“updateUser”时更新表。在您的案例中,基本上有三种方法来更新数据

  • 重建整排
  • 选择表中的特定单元格并更改内容
  • 使用双向数据绑定框架
  • 根据我的经验,最好的解决方案是f.ex。主干网就是这样做的,当数据发生变化时,它只是重新创建所有的HTML。双向数据绑定甚至更强大,但在这种情况下似乎有些过火

    因此,基本上在updateUser函数中:

    var row = buildRow(user);
    var $existingRow = $(id);
    if ($existingRow.length) {
      $existingRow.replaceWith(row);
    } else {
      $('#users').append(row);
    }
    
    现在,这当然需要对“buildRow”函数进行更改,而不是使其追加行,而是返回行


    希望这能让您更进一步……

    我对您的原型JSFIDLE做了一些修改,因此它包含了一个工作示例

    我需要修改一些部分以使其工作,例如更新我添加了一个函数的对象

    updateObjectById = function (id, obj){
            for (var i = 0, l = userData.length; i < l; i++) {
               if (userData[i].id == id) {
                userData[i] = obj;
            }
        }
    };
    
    updateObjectById=函数(id,obj){
    for(var i=0,l=userData.length;i

    我想你应该能够解决这个问题,通过给定的一把小提琴会很有帮助。如果
    #用户
    在附加行之前没有任何数据,你可以简单地用
    替换
    .append(html)
    。html(html)
    并在
    updateUser()中调用
    buildRow(user)
    函数
    但我从json:)中获取数据,所以这就是它的外观(我的js代码:)看看这个:如果需要,还可以使用jQuery对表进行排序。一个有工作数据源的JSFIDLE就好了。