为多个列表项制作onClick删除功能
Making onClick delete function for multiple list items
我目前正在使用 Rest API 为 SharePoint 页面开发自定义评论解决方案。我无法根据评论的 ID 为每个评论制作删除按钮。
我的删除函数如下所示,并删除基于 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);
}
现在的问题是,所有的删除按钮都会删除评论数组中的最后一项,而不是它所附加的评论。有没有办法 "prime" 每个具有正确 ID 的按钮的删除功能,而不是只删除最后一项?
在JavaScript中关键字var
定义了一个函数变量。 for
循环不会为 i
创建新的作用域。这意味着,当您的函数被调用时,i
的值是循环结束后的值,它引用最后一项。
我目前正在使用 Rest API 为 SharePoint 页面开发自定义评论解决方案。我无法根据评论的 ID 为每个评论制作删除按钮。
我的删除函数如下所示,并删除基于 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);
}
现在的问题是,所有的删除按钮都会删除评论数组中的最后一项,而不是它所附加的评论。有没有办法 "prime" 每个具有正确 ID 的按钮的删除功能,而不是只删除最后一项?
在JavaScript中关键字var
定义了一个函数变量。 for
循环不会为 i
创建新的作用域。这意味着,当您的函数被调用时,i
的值是循环结束后的值,它引用最后一项。