首页 > 解决方案 > 如何解决此错误;'document.getElementById('myChart').getContext' 未定义)?

问题描述

我已尝试查看有关该错误的相关已回答问题:

TypeError: document.getElementById('myChart').getContext is not a function. (In 'document.getElementById('myChart').getContext('2d')', 'document.getElementById('myChart').getContext' is undefined)

但到目前为止,我还没有收到任何建议。我正在尝试使用 chart.js 库并不断收到标题中的错误。下面是我的 HTML 和 javascript 代码,js 代码位于一个名为 app.js 的单独文件中。任何帮助将不胜感激。谢谢。

<!DOCTYPE html>
<html>
<head>
    <script src="https://cdn.jsdelivr.net/npm/chart.js@2.9.4/dist/Chart.min.js"></script>
  
    <title></title>
    
    <link rel="stylesheet" type="text/css" href="contxt.css" />
</head>
<body>

    <div class="container">
        <div id='myChart'></div>
    </div>

</body>
<script src="app.js"></script>
</html>

这是JS:

if (document.readyState == 'loading') {
    document.addEventListener('DOMContentLoaded', fire)
}else{
    fire()
}

function fire() {

var ctx = document.getElementById('myChart').getContext('2d');
var myChart = new Chart(ctx, {
    type: 'bar',
    data: {
        labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
        datasets: [{
            label: '# of Votes',
            data: [12, 19, 3, 5, 2, 3],
            backgroundColor: [
                'rgba(255, 99, 132, 0.2)',
                'rgba(54, 162, 235, 0.2)',
                'rgba(255, 206, 86, 0.2)',
                'rgba(75, 192, 192, 0.2)',
                'rgba(153, 102, 255, 0.2)',
                'rgba(255, 159, 64, 0.2)'
            ],
            borderColor: [
                'rgba(255, 99, 132, 1)',
                'rgba(54, 162, 235, 1)',
                'rgba(255, 206, 86, 1)',
                'rgba(75, 192, 192, 1)',
                'rgba(153, 102, 255, 1)',
                'rgba(255, 159, 64, 1)'
            ],
            borderWidth: 1
        }]
    },
    options: {
        scales: {
            yAxes: [{
                ticks: {
                    beginAtZero: true
                }
            }]
        }
    }
});

}

标签: javascripthtmldomchart.js

解决方案


只有画布可以有上下文。请更换

<div class="container">
    <div id='myChart'></div>
</div>

为了

<div class="container">
    <canvas id='myChart'></canvas> <!-- this line -->
</div>

推荐阅读