我有这个函数可以通过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);
};
P.S我想在同一个地方更新,我的ID应该是相同的。
答案 0 :(得分:1)
我稍微修改了你的原型jsFiddle,所以它包含一个工作示例。
我需要修改一些部分才能使它工作,例如更新我添加了一个函数的对象。
updateObjectById = function (id, obj){
for (var i = 0, l = userData.length; i < l; i++) {
if (userData[i].id == id) {
userData[i] = obj;
}
}
};
我应该能够通过给定的jsFiddle
来解决这个问题答案 1 :(得分:0)
据我了解,您希望在运行“updateUser”时更新表。在您的案例中,基本上有三种方法可以更新数据。
根据我的经验,最好的解决方案,以及如何f.ex. Backbone做到了,只是在数据发生变化时重新创建所有HTML。双向数据绑定甚至更强大,但在这种情况下似乎有点过分。
所以基本上在你的updateUser函数中:
var row = buildRow(user);
var $existingRow = $(id);
if ($existingRow.length) {
$existingRow.replaceWith(row);
} else {
$('#users').append(row);
}
现在,这当然需要更改你的“buildRow”函数,而不是让它追加行,而是返回它。
希望这会让你更进一步......