共两个function,第一个显示从数据库读取的数据有效,第二个将获取的数据做成图表
<!DOCTYPE html>
<html lang="en">
<head>
<title>Final Assigment</title>
<script type="text/javascript"></script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script defer src="final.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.js"></script>
<link rel="stylesheet" href="final.css">
</head>
<body onload="thirty_measurement()">
<h2>Tier2 </h2>
<button id="thirty_measurement">Recent weather data</button>
<button id="twenty_temp">Recent weather data</button>
<button id="twenty_wind">Recent weather data</button>
<button id="user_interface">User Interface</button>
<div id="output"></div>
<canvas id="weather_chart" width="500" height="400">
</body>
</html>
document.getElementById('thirty_measurement').addEventListener('click', thirty_measurement);
let chart1=null;
function thirty_measurement() {
fetch("http://webapi19sa-1.course.tamk.cloud/v1/weather")
.then((res) => res.json())
.then((data) => {
let output = '<h2>30 Weather Data</h2>';
let x_axis=new Array();
let y_axis=new Array();
for(let i = 0; i < 30; i++) {
const weatherData = data[i];
let arr = weatherData.date_time.split('T')
let sep_date = arr[0];
let sep_time = arr[1];
x_axis[i]=sep_time[0];
y_axis[i]=weatherData.data;
output += `
<table class="tableView1">
<tr>
<th>Row Number</th>
<th>Measurement Date</th>
<th>Measurement Time</th>
<th>Measurement Type</th>
<th>Measured value</th>
</tr>
<tr>
<td>${i + 1}</td>
<td>${sep_date}</td>
<td>${sep_time}</td>
<td>${Object.keys(weatherData.data)}</td>
<td>${Object.values(weatherData.data)}</td>
</tr>
</table>
`;
}
document.getElementById('output').innerHTML = output;
chart2(x_axis,y_axis);
})
}
function chart2(sep_date,weatherData){
const ctx=document.getElementById('weather_chart').getContext('2d');
if(chart1!=null){
chart1.destroy();
}
chart1=new Chart(ctx,{
type: 'bar',
data:{
labels:sep_date,
datasets: [{
label:'Chart Of 30 Weather Data',
data: weatherData,
backgroundColor:'reba(127,255,127,0.4)',
borderWidth:3,
}]
},
options:{
legend:{
display: false
},
scales:{
yAxes: [{
ticks:{
beginAtZero: true
}
}]
},
animation: false,
events:[]
}
});
}
运行结果,可以显示第一个数据,第二个显示空白表格
我猜测是第一个function里面
let arr = weatherData.date_time.split('T')
let sep_date = arr[0];
let sep_time = arr[1];
x_axis[i]=sep_time[0];
y_axis[i]=weatherData.data;
这一部分不可行
第一个function顺利读取,第二个function可以根第一个function制作表格
控制台是否有报错呢?