javascript - 为什么我的按钮不起作用?
问题描述
您好,我使用 javascript 和 chart.js 在 HTML 中编写了这段代码:
var chart_labels = ['06:00', '09:00', '12:00', '15:00', '18:00', '21:00'];
var temp_dataset = ['1', '8', '10', '10', '9', '7'];
var rain_dataset = ['0', '0', '6', '32', '7', '2'];
var ctx = document.getElementById("forecast").getContext('2d');
var config = {
type: 'bar',
data: {
labels: chart_labels,
datasets: [{
type: 'line',
label: "Temperature (Celsius)",
yAxisID: "y-axis-0",
fill: false,
data: temp_dataset,
}, {
type: 'bar',
label: "Precipitation (%)",
yAxisID: "y-axis-1",
data: rain_dataset,
}]
},
options: {
scales: {
yAxes: [{
position: "left",
"id": "y-axis-0",
}, {
position: "right",
"id": "y-axis-1",
}]
}
}
};
var forecast_chart = new Chart(ctx, config);
$("#0").click(function() {
var data = forecast_chart.config.data;
data.datasets[0].data = temp_dataset;
data.datasets[1].data = rain_dataset;
data.labels = chart_labels;
forecast_chart.update();
});
$("#1").click(function() {
var chart_labels = ['00:00', '03:00', '06:00', '09:00', '12:00', '15:00', '18:00', '21:00'];
var temp_dataset = ['5', '3', '4', '8', '10', '11', '10', '9'];
var rain_dataset = ['0', '0', '1', '4', '19', '19', '7', '2'];
var data = forecast_chart.config.data;
data.datasets[0].data = temp_dataset;
data.datasets[1].data = rain_dataset;
data.labels = chart_labels;
forecast_chart.update();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>
<canvas id="forecast" width="300" height="150"></canvas>
<button id="0" type="button">Dataset 1</button>
<button id="1" type="button">Dataset 2</button>
但问题是当我点击按钮时它没有效果......根据你的问题在哪里?据我说,我正确定义了我的功能,所以应该没问题,但事实并非如此。
我该如何解决这个问题?
谢谢 !
解决方案
当您使用 jquery 选择器选择按钮时,您的事件处理程序和 chart.js 的代码应该在里面$(document).ready()
。所以它会起作用。检查下面的代码 -
<script>
$(document).ready(function(){
var chart_labels = ['06:00', '09:00', '12:00', '15:00', '18:00', '21:00'];
var temp_dataset = ['1', '8', '10', '10', '9', '7'];
var rain_dataset = ['0', '0', '6', '32', '7', '2'];
var ctx = document.getElementById("forecast").getContext('2d');
var config = {
type: 'bar',
data: {
labels: chart_labels,
datasets: [{
type: 'line',
label: "Temperature (Celsius)",
yAxisID: "y-axis-0",
fill: false,
data: temp_dataset,
}, {
type: 'bar',
label: "Precipitation (%)",
yAxisID: "y-axis-1",
data: rain_dataset,
}]
},
options: {
scales: {
yAxes: [{
position: "left",
"id": "y-axis-0",
}, {
position: "right",
"id": "y-axis-1",
}]
}
}
};
var forecast_chart = new Chart(ctx, config);
$("#0").click(function() {
var data = forecast_chart.config.data;
data.datasets[0].data = temp_dataset;
data.datasets[1].data = rain_dataset;
data.labels = chart_labels;
forecast_chart.update();
});
$("#1").click(function() {
var chart_labels = ['00:00', '03:00', '06:00', '09:00', '12:00', '15:00', '18:00', '21:00'];
var temp_dataset = ['5', '3', '4', '8', '10', '11', '10', '9'];
var rain_dataset = ['0', '0', '1', '4', '19', '19', '7', '2'];
var data = forecast_chart.config.data;
data.datasets[0].data = temp_dataset;
data.datasets[1].data = rain_dataset;
data.labels = chart_labels;
forecast_chart.update();
});
});
</script>
这是一个工作演示:https ://jsfiddle.net/7t6vfdwf/2/
您可以看到按钮正在更改单击时的数据集。
推荐阅读
- sql - PIVOT SQL 返回工作日的重复行
- nestjs - 管道接收到的嵌套参数
- grails - 集成测试错误h2数据库
- django - ImportError:没有名为“django.contrib.sessions”的模块
- c# - 进程调试管理器 (PDM) 安全问题
- flutter - 如何在 Dart 中对 Textfield onChange 进行去抖动?
- programming-languages - 在不使用操作系统的情况下访问硬件的最低编程语言是什么
- html - css - 具有浅阴影颜色的文本和具有较深颜色的前景
- javascript - 在路由更改时刷新标头组件
- php - 在 PHP 中确定性地从密码中派生一个 32 字节的密钥