否则如果方法执行失败?
Else if method fails to execute?
我正在尝试根据项目状态中的实例计数生成条形图。 "if..." 语句工作得很好,计算所有包含字符串 "Complete" 的元素,在控制台上输出并绘制它。但是,"else if..." returns 控制台上没有任何内容,也没有任何图形。我对问题可能是什么感到震惊。有什么见解吗?
google.charts.load('current', {
'packages': ['bar']
});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var complete = 0;
var deferred = 0;
var onhold = 0;
var uri = "https://company.com/sites/ITApp/_api/Web/Lists/getByTitle('Global%20Projects')/items";
$.ajax({
url: uri,
type: "GET",
async: false,
data: {},
cache: true,
headers: {
"ACCEPT": "application/json;odata=verbose"
},
success: function(data) {
var dataResults = data.d.results;
for (i = 1; i < dataResults.length; i++) {
if (dataResults[i].Project_x0020_Status == "Completed") {
complete = complete + 1;
} else if (dataResults[i].Project_x0020_Status == "Deferred") {
console.log(deferred);
deferred = deferred + 1;
} else if (dataResults[i].Project_x0020_Status == "On-Hold") {
onhold = onhold + 1;
} else {}
}
}
});
var data = google.visualization.arrayToDataTable([
['Category', 'Complete', 'Deferred', 'On-Hold'],
['Project Status', complete, deferred, onhold],
var options = {
chart: {
title: 'Company Performance',
subtitle: 'Sales, Expenses, and Profit: 2014-2017',
}
};
var chart = new google.charts.Bar(document.getElementById('columnchart_material'));
chart.draw(data, google.charts.Bar.convertOptions(options));
}
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<div id="columnchart_material" style="width: 800px; height: 500px;"></div>
更新:我认为目前这是 SharePoint 问题。当我转到我的 uri 并在 XML 文件中搜索 "Deferred" 和 "On-Hold" 时,我找不到它们中的任何一个。但是,当我转到包含 SharePoint 数据的实际列表时,我可以找到它。这可能是 table 在导入后未在 XML 中正确翻译的问题吗?
如果值为 null
,则可能不会作为 属性 包含在行
中
检查以确保它存在,然后再检查值
您还可以使用 switch
语句来检查值...
var dataResults = data.d.results;
for (i = 0; i < dataResults.length; i++) {
if (dataResults[i].hasOwnProperty('Project_x0020_Status')) {
switch (dataResults[i].Project_x0020_Status) {
case "Completed":
complete = complete + 1;
break;
case "Deferred":
deferred = deferred + 1;
break;
case "On-Hold":
onhold = onhold + 1;
break;
}
}
}
正如我所怀疑的那样,问题出在 AJAX 调用上。上面的代码是正确的;我只需要将 "?$top=1000" 添加到 link 因为服务器端分页存在限制。
var uri="https://company.com/sites/ITApp/_api/Web/Lists/getByTitle('Global%20Projects')/items?$top=1000"
我正在尝试根据项目状态中的实例计数生成条形图。 "if..." 语句工作得很好,计算所有包含字符串 "Complete" 的元素,在控制台上输出并绘制它。但是,"else if..." returns 控制台上没有任何内容,也没有任何图形。我对问题可能是什么感到震惊。有什么见解吗?
google.charts.load('current', {
'packages': ['bar']
});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var complete = 0;
var deferred = 0;
var onhold = 0;
var uri = "https://company.com/sites/ITApp/_api/Web/Lists/getByTitle('Global%20Projects')/items";
$.ajax({
url: uri,
type: "GET",
async: false,
data: {},
cache: true,
headers: {
"ACCEPT": "application/json;odata=verbose"
},
success: function(data) {
var dataResults = data.d.results;
for (i = 1; i < dataResults.length; i++) {
if (dataResults[i].Project_x0020_Status == "Completed") {
complete = complete + 1;
} else if (dataResults[i].Project_x0020_Status == "Deferred") {
console.log(deferred);
deferred = deferred + 1;
} else if (dataResults[i].Project_x0020_Status == "On-Hold") {
onhold = onhold + 1;
} else {}
}
}
});
var data = google.visualization.arrayToDataTable([
['Category', 'Complete', 'Deferred', 'On-Hold'],
['Project Status', complete, deferred, onhold],
var options = {
chart: {
title: 'Company Performance',
subtitle: 'Sales, Expenses, and Profit: 2014-2017',
}
};
var chart = new google.charts.Bar(document.getElementById('columnchart_material'));
chart.draw(data, google.charts.Bar.convertOptions(options));
}
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<div id="columnchart_material" style="width: 800px; height: 500px;"></div>
更新:我认为目前这是 SharePoint 问题。当我转到我的 uri 并在 XML 文件中搜索 "Deferred" 和 "On-Hold" 时,我找不到它们中的任何一个。但是,当我转到包含 SharePoint 数据的实际列表时,我可以找到它。这可能是 table 在导入后未在 XML 中正确翻译的问题吗?
如果值为 null
,则可能不会作为 属性 包含在行
检查以确保它存在,然后再检查值
您还可以使用 switch
语句来检查值...
var dataResults = data.d.results;
for (i = 0; i < dataResults.length; i++) {
if (dataResults[i].hasOwnProperty('Project_x0020_Status')) {
switch (dataResults[i].Project_x0020_Status) {
case "Completed":
complete = complete + 1;
break;
case "Deferred":
deferred = deferred + 1;
break;
case "On-Hold":
onhold = onhold + 1;
break;
}
}
}
正如我所怀疑的那样,问题出在 AJAX 调用上。上面的代码是正确的;我只需要将 "?$top=1000" 添加到 link 因为服务器端分页存在限制。
var uri="https://company.com/sites/ITApp/_api/Web/Lists/getByTitle('Global%20Projects')/items?$top=1000"