javascript - 为多个列表项制作onClick删除功能
问题描述
我目前正在使用 Rest API 为 SharePoint 页面开发自定义评论解决方案。我无法根据他们的 ID 为每个评论制作删除按钮。
我的 Delete 函数看起来像这样并删除基于 id 的列表项:
function deleteListItems(id) {
$.ajax
({
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/GetByTitle('Comments')/items(" + id + ")",
type: "POST",
headers:
{
"Accept": "application/json;odata=verbose",
"Content-Type": "application/json;odata=verbose",
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
"IF-MATCH": "*",
"X-HTTP-Method": "DELETE"
},
success: function()
{
window.location.reload;
},
error: function (error) {
alert(JSON.stringify(error));
}
});
}
每个评论都是从具有不同 id 的评论对象数组创建的,对于每个评论对象,我从以下代码段创建一个删除按钮:
for (var i = 0; i < commentObj.length; i++) {
//Making of the comment contents
var deleteBtn = document.createElement("a");
btnContent = document.createTextNode("Delete");
deleteBtn.appendChild(btnContent);
deleteBtn.onclick = function(){deleteListItems(commentObj[i].Id)};
newComment.appendChild(deleteBtn);
}
现在的问题是所有删除按钮都删除了评论数组中的最后一项,而不是它附加的评论。有没有办法为每个具有正确 ID 的按钮“启动”删除功能,而不仅仅是删除最后一项?
解决方案
在 JavaScript 中,关键字var
定义了一个函数变量。该for
循环不会为i
. 这意味着,当您的函数被调用时, 的值i
是循环结束后的值,它引用最后一项。
推荐阅读
- android - 在没有 Internet 连接的情况下获取当前位置
- go - 如何在谷歌云存储中上传调整大小的图像?
- java - 使用 Eclipse 未显示表头
- docker - 有没有办法命令 Docker 启动容器以在下次启动时而不是现在启动?
- mysql - MySQLWorkBench 无法设置外键
- css - 世博会谷歌地方自动完成 - listView 不 clicable
- mysql - 用不同的表计算数据
- postgresql - Postgresql 对非重音不敏感,对重音词敏感
- node.js - 使用 mongodb-memory-server 进行测试失败/超时
- html - 引导程序中列之间的间距