我目前正在使用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);
}
现在的问题是,所有删除按钮都删除注释数组中的最后一项,而不是它所附加的注释。有没有一种方法可以用正确的ID“启动”每个按钮的删除功能,而不仅仅是删除最后一个项目?
答案 0 :(得分:0)
在JavaScript中,关键字var
定义了一个函数变量。 for
循环不会为i
创建新作用域。这意味着,在调用函数时,i
的值是循环结束后的值,该值引用了最后一项。