Javascript 类型错误:document.getElementById(…)为null 线图示例 var monthsData={ 标签:[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”], 数据集:[ { fillColor:“rgba(172194132,0.4)”, strokeColor:#ACC26D“, 点颜色:“#fff”, pointStrokeColor:#9DB86D“, 数据:[20315699251 305247] } ] }; var月数=document.getElementById(“chartData”).getContext(“2d”); 新图表(月)。线(月数据);

Javascript 类型错误:document.getElementById(…)为null 线图示例 var monthsData={ 标签:[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”], 数据集:[ { fillColor:“rgba(172194132,0.4)”, strokeColor:#ACC26D“, 点颜色:“#fff”, pointStrokeColor:#9DB86D“, 数据:[20315699251 305247] } ] }; var月数=document.getElementById(“chartData”).getContext(“2d”); 新图表(月)。线(月数据);,javascript,Javascript,我已经看到了以前关于同一问题的错误,并纠正了所有这些错误,但我的错误没有得到解决。我正在使用chart.js库。将您的脚本标记放在包含canvas元素的div下面 之所以会出现错误,是因为在解释和执行脚本时,DOM中不存在画布 缔约国指出: 在浏览器继续解析页面之前,将立即获取并执行没有async或defer属性的脚本以及内联脚本 话虽如此,我的回答给出了错误的原因和一个简单的解决方法。查看更惯用的解决方案。将脚本标记放在包含画布元素的div下面 之所以会出现错误,是因为在解释和执行脚本时,DO

我已经看到了以前关于同一问题的错误,并纠正了所有这些错误,但我的错误没有得到解决。我正在使用chart.js库。

将您的
脚本
标记放在包含
canvas
元素的
div
下面

之所以会出现错误,是因为在解释和执行脚本时,DOM中不存在画布

缔约国指出:

在浏览器继续解析页面之前,将立即获取并执行没有async或defer属性的脚本以及内联脚本


话虽如此,我的回答给出了错误的原因和一个简单的解决方法。查看更惯用的解决方案。

脚本
标记放在包含
画布
元素的
div
下面

之所以会出现错误,是因为在解释和执行脚本时,DOM中不存在画布

缔约国指出:

在浏览器继续解析页面之前,将立即获取并执行没有async或defer属性的脚本以及内联脚本


话虽如此,我的回答给出了错误的原因和一个简单的解决方法。查看更惯用的解决方案。

您正在尝试在加载元素之前检索该元素。因此,在页面加载后使用事件处理程序加载脚本

加载事件在文档加载过程结束时激发。此时,文档中的所有对象都在DOM中,所有图像、脚本、链接和子帧都已加载完毕。()


window.onload=函数(){
var monthsData={
标签:[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”],
数据集:[{
fillColor:“rgba(172194132,0.4)”,
strokeColor:#ACC26D“,
点颜色:“#fff”,
pointStrokeColor:#9DB86D“,
数据:[20315699251 305247]
}]
};
var月数=document.getElementById(“chartData”).getContext(“2d”);
新图表(月)。线(月数据);
}

您正在尝试在加载元素之前检索该元素。因此,在页面加载后使用事件处理程序加载脚本

加载事件在文档加载过程结束时激发。此时,文档中的所有对象都在DOM中,所有图像、脚本、链接和子帧都已加载完毕。()


window.onload=函数(){
var monthsData={
标签:[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”],
数据集:[{
fillColor:“rgba(172194132,0.4)”,
strokeColor:#ACC26D“,
点颜色:“#fff”,
pointStrokeColor:#9DB86D“,
数据:[20315699251 305247]
}]
};
var月数=document.getElementById(“chartData”).getContext(“2d”);
新图表(月)。线(月数据);
}

当执行语句
document.getElementById(“chartData”)
时,您会遇到问题,因为DOM尚未加载。所以它无法找到元素

您应该使用event

DOMContentLoaded事件在初始HTML文档完全加载和解析时触发,而不等待样式表、图像和子帧完成加载


document.addEventListener(“DOMContentLoaded”),函数(事件){
log(“DOM已完全加载并解析”);
var monthsData={
标签:[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”],
数据集:[
{
fillColor:“rgba(172194132,0.4)”,
strokeColor:#ACC26D“,
点颜色:“#fff”,
pointStrokeColor:#9DB86D“,
数据:[20315699251 305247]
}
]
};
var月数=document.getElementById(“chartData”).getContext(“2d”);
新图表(月)。线(月数据);
});

当执行语句
document.getElementById(“chartData”)
时,您会遇到问题,因为DOM尚未加载。所以它无法找到元素

您应该使用event

DOMContentLoaded事件在初始HTML文档完全加载和解析时触发,而不等待样式表、图像和子帧完成加载


document.addEventListener(“DOMContentLoaded”),函数(事件){
log(“DOM已完全加载并解析”);
var monthsData={
标签:[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”],
数据集:[
{
fillColor:“rgba(172194132,0.4)”,
strokeColor:#ACC26D“,
点颜色:“#fff”,
pointStrokeColor:#9DB86D“,
数据:[20315699251 305247]
}
]
};
var月数=document.getElementById(“chartData”).getContext(“2d”);
新图表(月)。线(月数据);
});

像这样更改代码

<script>
document.addEventListener("DOMContentLoaded", function(event) {
    console.log("DOM fully loaded and parsed");

    var monthsData = {
        labels: ["January", "February", "March", "April", "May", "June"],
        datasets: [
                {
                    fillColor: "rgba(172,194,132,0.4)",
                    strokeColor: "#ACC26D",
                    pointColor: "#fff",
                    pointStrokeColor: "#9DB86D",
                    data: [203, 156, 99, 251, 305, 247]
                }
            ]
    };
    var months = document.getElementById("chartData").getContext("2d");
    new Chart(months).Line(monthsData);
});
</script>

线图示例
var monthsData={
标签:[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”],
数据集:[
{
fillColor:“rgba(172194132,0.4)”,
strokeColor:#ACC26D“,
点颜色:“#fff”,
pointStrokeColor:#9DB86D“,
<script>
  window.onload = function() {    
    var monthsData = {
      labels: ["January", "February", "March", "April", "May", "June"],
      datasets: [{
        fillColor: "rgba(172,194,132,0.4)",
        strokeColor: "#ACC26D",
        pointColor: "#fff",
        pointStrokeColor: "#9DB86D",
        data: [203, 156, 99, 251, 305, 247]
      }]
    };
    var months = document.getElementById("chartData").getContext("2d");
    new Chart(months).Line(monthsData);
  }
</script>
<script>
document.addEventListener("DOMContentLoaded", function(event) {
    console.log("DOM fully loaded and parsed");

    var monthsData = {
        labels: ["January", "February", "March", "April", "May", "June"],
        datasets: [
                {
                    fillColor: "rgba(172,194,132,0.4)",
                    strokeColor: "#ACC26D",
                    pointColor: "#fff",
                    pointStrokeColor: "#9DB86D",
                    data: [203, 156, 99, 251, 305, 247]
                }
            ]
    };
    var months = document.getElementById("chartData").getContext("2d");
    new Chart(months).Line(monthsData);
});
</script>
<html>
<head>
</head>
<body>
<h2>Example of Line Graph</h2>    
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.2/Chart.js"></script>

<div>
     <canvas id="chartData" width="600" height="400"></canvas>
</div>
<script>
    var monthsData = {
        labels: ["January", "February", "March", "April", "May", "June"],
        datasets: [
        {
            fillColor: "rgba(172,194,132,0.4)",
            strokeColor: "#ACC26D",
            pointColor: "#fff",
            pointStrokeColor: "#9DB86D",
            data: [203, 156, 99, 251, 305, 247]
        }
        ]
    };
    var months = document.getElementById("chartData").getContext("2d");
    new Chart(months).Line(monthsData);
</script>

</body>
</html>