我有一个从 SharePoint 列表创建的图表,它在 Chrome 中工作,但在 IE 11 中不起作用。当我在 IE 11 中调试时,收到错误 SCRIPT438:对象不支持属性或方法“值”
。我对 JavaScript 还很陌生。
任何人都可以告诉我什么可能是修复或我缺少什么
我正在使用 Chart.js 和 ajax。
<script type="text/javascript" src="/sites/carm/Shared%20Documents/Chart.min.js"></script>
<script type="text/javascript" src="/sites/carm/Shared%20Documents/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$.ajax({
url: "/sites/carm/_api/web/lists/getbytitle('ATO%20Conditions')/items?$select=ID,Title,m4gs&$top=5000",
type: "GET",
headers: {
"accept": "application/json;odata=verbose",
},
success: function(data) {
if (data.d.results.length > 0) {
var inactiveSet = {};
var activeSet = {};
var otherSet = {};
var totalActive = 0;
var totalInActive = 0;
var totalOther = 0;
var initZero = 0;
$.each(data.d.results, function(index, item) {
if (item.m4gs === "Completed") {
totalInActive++
if (item.Title in inactiveSet) {
inactiveSet[item.Title]++;
} else {
inactiveSet[item.Title] = 1;
activeSet[item.Title] = initZero;
otherSet[item.Title] = initZero;
}
} else if (item.m4gs === "Active") {
totalActive++
if (item.Title in activeSet) {
activeSet[item.Title]++;
} else {
inactiveSet[item.Title] = initZero;
activeSet[item.Title] = 1;
otherSet[item.Title] = initZero;
}
} else {
totalOther++
if (item.Title in otherSet) {
otherSet[item.Title]++;
} else {
inactiveSet[item.Title] = initZero;
activeSet[item.Title] = initZero;
otherSet[item.Title] = 1;
}
}
});
}
var inactiveOrdered = {};
var activeOrdered = {};
var otherOrdered = {};
Object.keys(activeSet).sort().forEach(function(key) {
activeOrdered[key] = activeSet[key];
});
Object.keys(inactiveSet).sort().forEach(function(key) {
inactiveOrdered[key] = inactiveSet[key];
});
Object.keys(otherSet).sort().forEach(function(key) {
otherOrdered[key] = otherSet[key];
});
var ctx = document.getElementById("myChart").getContext("2d");
var data = {
labels: Object.keys(activeOrdered),
datasets: [{
label: "Active",
fillColor: "steelblue",
data: Object.values(activeOrdered)
},
{
label: "Completed",
fillColor: "orange",
data: Object.values(inactiveOrdered)
}
]
};
....
</script>
错误来自于以
开头的行...
var data = {
labels: Object.keys(activeOrdered),
...
最佳答案
发生此错误的原因是 Internet Explorer 不支持 Object.values()
。
参见browser compatibility对于Object.values()
这是一个解决方法,您可以使用它......
data: Object.keys(activeOrdered).map(function(key) {return activeOrdered[key];})
还有...
data: Object.keys(inactiveOrdered).map(function(key) {return inactiveOrdered[key];})
关于jquery - 脚本438 : Object doesn't support property or method 'values' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44091075/