gpt4 book ai didi

javascript - 时间线图表栏错误 : attribute x: Expected length, "NaN"

转载 作者:行者123 更新时间:2023-11-28 10:44:44 24 4
gpt4 key购买 nike

第三天,我尝试使用 google 时间轴图表从 json 获取没有错误的数据。我认为它应该有效,但我收到错误 <text> attribute x: Expected length, "NaN".

有一个问题部分<g><text text-anchor="middle" x="NaN" y="21.05" font-family="Arial" font-size="13" stroke="none" stroke-width="0" fill="#000000"> </text></g>

这是我的图表,其中包含对数据的 ajax 调用:

var data = [];
$.ajax({
url: "/api/reports/6/linestatus",
dataType: "json",
success: function (jsonData) {
for (var i = 0; i < jsonData.length; i++) {
startTime = new Date(jsonData[i].dateStart);
startHours = startTime.getHours();
startMinutes = startTime.getMinutes();
startSeconds = startTime.getSeconds();

endTime = new Date(jsonData[i].dateEnd);
endHours = endTime.getHours();
endMinutes = endTime.getMinutes();
endSeconds = endTime.getSeconds();
console.log(data);
data.push(
[jsonData[i].lineName.toString(), jsonData[i].status.toString(), new Date(0, 0, 0, startHours, startMinutes, startSeconds), new Date(0, 0, 0, endHours, endMinutes, endSeconds)]
);

}
}
})

dataTable.addRows(data);

我的 JSON 数据:

[{
"lineId": 6,
"lineName": "Line 1",
"status": 2,
"dateStart": "2017-08-03T15:10:20.42",
"dateEnd": "2017-08-03T15:10:23.353"
}]

抱歉,代码太多。 =\谢谢。

最佳答案

评论中的 fiddle 有两件事

(1) 循环中的语法无效
没有对数组进行任何操作

for (var i = 0; i < 2; i++){
[ 'Washington', new Date(), new Date() ], // <-- ??
}

需要使用addRow,或者其他东西

for (var i = 0; i < 2; i++){
dataTable.addRow([ 'Washington', new Date(), new Date() ]);
}

(2) 这可能是一个错误,但如果所有行都有相同的开始日期和结束日期,
图表将抛出错误

  // dates have close if not equal times
dataTable.addRow([ 'Washington', new Date(), new Date() ]);

请参阅以下工作片段,
添加了 addRow 并修改了开始日期...

google.charts.load('current', {
callback: drawChart,
packages: ['timeline']
});

function drawChart() {
var container = document.getElementById('timeline');
var chart = new google.visualization.Timeline(container);
var dataTable = new google.visualization.DataTable();

dataTable.addColumn({ type: 'string', id: 'President' });
dataTable.addColumn({ type: 'date', id: 'Start' });
dataTable.addColumn({ type: 'date', id: 'End' });

for (var i = 0; i < 2; i++) {
dataTable.addRow([
'row ' + (i + 1),
new Date((new Date()).getTime() - ((i + 1) * 24 * 60 * 60 * 1000)),
new Date()
]);
}

chart.draw(dataTable);
}
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<div id="timeline" style="height: 180px;"></div>

<小时/>

编辑
这是一个使用类似数据的工作示例...

google.charts.load('current', {
callback: drawChart,
packages: ['timeline']
});

function drawChart() {
var jsonData = [{
"lineId": 1,
"lineName": "Line 1",
"status": 1,
"dateStart": "2017-08-03T15:10:20.42",
"dateEnd": "2017-08-03T15:10:23.353"
}, {
"lineId": 2,
"lineName": "Line 2",
"status": 2,
"dateStart": "2017-08-03T15:10:30.42",
"dateEnd": "2017-08-03T15:10:33.353"
}, {
"lineId": 3,
"lineName": "Line 3",
"status": 3,
"dateStart": "2017-08-03T15:10:40.42",
"dateEnd": "2017-08-03T15:10:43.353"
}, {
"lineId": 4,
"lineName": "Line 4",
"status": 4,
"dateStart": "2017-08-03T15:10:50.42",
"dateEnd": "2017-08-03T15:10:53.353"
}];
var container = document.getElementById('chart');
var chart = new google.visualization.Timeline(container);
var dataTable = new google.visualization.DataTable();

dataTable.addColumn({type: 'string', id: 'row'});
dataTable.addColumn({type: 'string', id: 'bar'});
dataTable.addColumn({type: 'date', id: 'start'});
dataTable.addColumn({type: 'date', id: 'end'});

for (var i = 0; i < jsonData.length; i++) {
dataTable.addRow(
[jsonData[i].lineName.toString(), jsonData[i].status.toString(), new Date(jsonData[i].dateStart), new Date(jsonData[i].dateEnd)]
);
}

chart.draw(dataTable);
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart"></div>

关于javascript - 时间线图表栏错误 : <text> attribute x: Expected length, "NaN",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45494158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com