【发布时间】:2020-08-12 13:52:28
【问题描述】:
这适用于从 SharePoint 列表中提取数据,问题是:如何传递单击的按钮的 this.className(或通过下一步按钮获取列表中第 2 项的某种方式)。我需要从 data.d.results[1] 中提取第二个按钮的数据,依此类推。现在我只是得到错误,因为 classOfButton 没有定义(因为 this.className 没有成功传递:onQuerySucceeded()。
在页面顶部我有两个按钮:
<div id="buttonMaster">
<a class="product01">Product 1</a>
<a class="product02">Product 2</a>
</div>
我正在使用 API 从 SharePoint 2013 列表中提取信息:
const Productbuttons = document.querySelectorAll('#buttonMaster a');
for (const ProductButton of Productbuttons) {
ProductButton.addEventListener('click', function(event) {
getListData(this.className);
})
}
function getListData() {
var fullUrl = _spPageContextInfo.webAbsoluteUrl + /_api/web/lists/getByTitle('TestProductConstruct')/items;
$ajax({
url: fullUrl,
type: "GET";
headers: {
"accept": "Appplication/json;odata=verbose",
"content-type": "application/json;odata=verbose",
succes: onQuerySucceeded,
error: onQueryFailed
}
});
function onQuerySucceeded(data) {
var classOfButton = this.className;
switch(true) {
case classOfButton.contains('Product01');
const product1 = data.d.results[0];
$('step1Info').html(product1.Phase);
$('step2Info').html(product1.Step);
break;
case classOfButton.contains('Product02');
const product2 = data.d.results[1];
$('step1Info').html(product2.Phase);
$('step2Info').html(product2.Step);
break;
}
}
function onQueryFailed() {
alert('Error');
}
谢谢, 瑞恩
【问题讨论】:
-
在监听器中,使用
ev.target.className而不是this。并注意区分大小写---> Product01 vs. product01 -
谢谢,将事件监听器更新为 ev.target.className 和小写的 Product。仍然给我 classOfButton 未定义。 className 仍未成功传递。
标签: javascript rest sharepoint sharepoint-api