我正在尝试学习使用Chartjs,当我尝试通过其ID获取canvas元素时,我遇到了一个问题。由于某种原因,它没有被定义。这是因为我正在调用document.getElementByID
并且这不是在HTML文件中运行的吗?我试图使用外部文件来托管我的所有JS,而不是混乱我的HTML文件。
错误讯息:
Uncaught TypeError: undefined is not a function
在chart-option.js的第2行找到:var ctx = document.getElementByID("sessions-graph").getContext("2d");
的index.html
<!doctype html>
<html>
<head>
<title>Google Super Proxy Test</title>
<script src="Chart.min.js"></script>
<script src="chart-options.js"></script>
</head>
<body>
<div style="width: 50%">
<canvas id="sessions-graph" height="450" width="600"></canvas>
</div>
</body>
</html>
图表-options.js
// Get the context of the canvas element
var ctx = document.getElementByID("sessions-graph").getContext("2d");
var sessionsGraph = new Chart(ctx).Bar(data); //Create a chart with "data" array
var data = {
labels: ["January", "February", "March", "April", "May", "June", "July"],
datasets: [
{
label: "My First dataset",
fillColor: "rgba(220,220,220,0.5)",
strokeColor: "rgba(220,220,220,0.8)",
highlightFill: "rgba(220,220,220,0.75)",
highlightStroke: "rgba(220,220,220,1)",
data: [65, 59, 80, 81, 56, 55, 40]
},
{
label: "My Second dataset",
fillColor: "rgba(151,187,205,0.5)",
strokeColor: "rgba(151,187,205,0.8)",
highlightFill: "rgba(151,187,205,0.75)",
highlightStroke: "rgba(151,187,205,1)",
data: [28, 48, 40, 19, 86, 27, 90]
}
]
};
Chart.defaults.global = {
//Boolean - Whether the scale should start at zero, or an order of magnitude down from the lowest value
scaleBeginAtZero : true,
//Boolean - Whether grid lines are shown across the chart
scaleShowGridLines : true,
//String - Colour of the grid lines
scaleGridLineColor : "rgba(0,0,0,.05)",
//Number - Width of the grid lines
scaleGridLineWidth : 1,
//Boolean - If there is a stroke on each bar
barShowStroke : true,
//Number - Pixel width of the bar stroke
barStrokeWidth : 2,
//Number - Spacing between each of the X value sets
barValueSpacing : 5,
//Number - Spacing between data sets within X values
barDatasetSpacing : 1
}
答案 0 :(得分:0)
您的代码有拼写错误,方法应为document.getElementById()