Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chart.js基于从数组中选择的下拉列表打印数据_Javascript_Arrays_Charts - Fatal编程技术网

Javascript Chart.js基于从数组中选择的下拉列表打印数据

Javascript Chart.js基于从数组中选择的下拉列表打印数据,javascript,arrays,charts,Javascript,Arrays,Charts,我根据下面显示的数据制作了一个图表,数据显示了自行车站基于特定时间的租赁数量,整个想法是让图表根据我们从下拉列表中选择的内容做出响应,该列表允许选择特定时间。下拉列表包含一个小时列表:从0表示上午12点到23表示下午11点,现在如果用户选择例如16,并且相同的小时将存在于从rentalsStationsTotal开始的startHour列中,图表将仅显示16小时表示下午4点的租金 问题是,使用charts.js实现这一点的最佳方法是什么?更新图表的函数位于名为updateChart的代码末尾,但

我根据下面显示的数据制作了一个图表,数据显示了自行车站基于特定时间的租赁数量,整个想法是让图表根据我们从下拉列表中选择的内容做出响应,该列表允许选择特定时间。下拉列表包含一个小时列表:从0表示上午12点到23表示下午11点,现在如果用户选择例如16,并且相同的小时将存在于从rentalsStationsTotal开始的startHour列中,图表将仅显示16小时表示下午4点的租金

问题是,使用charts.js实现这一点的最佳方法是什么?更新图表的函数位于名为updateChart的代码末尾,但当从下拉列表中选择某个内容时,图表根本不会改变

<div class="container" style="width: 640px; height: 400px;">
<h2>Chart</h2>
<div>
   <form id="myForm">
      <select id="selectNumber">
      <option>Choose an hour</option>
      </select>
   </form>
   <canvas id="canvas3"></canvas>
</div>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.4/Chart.min.js"></script>

<script>
var userRentals = [{"Rentals": 12377, "StartHour": 0}, {"Rentals": 7047, "StartHour": 1}, {"Rentals": 4102, "StartHour": 2}, {"Rentals": 2681, "StartHour": 3}
var rentalsStationsTotal = [{"Rentals": 1, "Name": "Aleja Bielany", "StartHour": 0}, {"Rentals": 4, "Name": "Aleja Bielany", "StartHour": 1}, {"Rentals": 1, "Name": "Aleja Bielany", "StartHour": 3}]

var userRentalsHours = [];
var stationRentalsLabels = [];
var stationRentalsData = [];

for (var i = 0; i < userRentals.length; i++) {
userRentalsHours.push(userRentals[i].StartHour);  
}
for (var i = 0; i < rentalsStationsTotal.length; i++) {
stationRentalsLabels.push(rentalsStationsTotal[i].Name);  
}
for (var i = 0; i < rentalsStationsTotal.length; i++) {
stationRentalsData.push(rentalsStationsTotal[i].Rentals);  
}

var ctx3 = document.getElementById("canvas3").getContext("2d");

var canvas3 = new Chart(ctx3, {
        type: 'line',
        data: {
        labels : stationRentalsLabels, 
        datasets : [
            {
                label: 'godziny wypożyczeń w stacjach',
                fillColor : "rgba(220,280,220,0.5)",
                strokeColor : "rgba(220,220,220,1)",
                backgroundColor: "rgba(153,255,51,0.4)",
                data : stationRentalsData
            }]
        }
    });

/* Select Hour from drop down list */

var select = document.getElementById("selectNumber"); 
var options = userRentalsHours; 

for(var i = 0; i < userRentalsHours.length; i++) {
var opt = userRentalsHours[i];
var el = document.createElement("option");
el.text = opt;
el.value = opt;
select.add(el);
}

var currentChart;
var stationRentalsHoursTemp = [];

function updateChart() {
if(currentChart){currentChart.destroy();}

var determineHour = $("#selectNumber").val();
for (var i = 0; i < stationRentalsHours.length; i++) {
if(determineHour == stationRentalsHours[i]){
stationRentalsHoursTemp.push(rentalsHoursInDays[i].Date);  
}
}
var params = canvas3[determineHour]
currentChart = new Chart(ctx3)[params.method](params.data, {});
}
$('#selectNumber').on('change', updateChart)
updateChart();
</script>