未捕获的TypeError:无法读取null的属性'getContext'

时间:2014-09-13 22:40:21

标签: javascript particles

在我的控制台中,我收到错误:“未捕获的TypeError:无法读取属性'getContext'的null” 我只是找不到我犯的错误......或者我做错了什么。 那么也许你可以帮我找到它? 请帮忙:)

enter code here

var canvas = document.getElementById("myCanvas");

var ctx = canvas.getContext("2d");

var cW = canvas.width = 1000; 
var cH = canvas.height = 500; 

var particleAmount = 10; 
var particles = []; 

for(var i=0;i<particleAmount;i++) { 
particles.push(new particle());

}

function particle() { 
this.x = (Math.random() * (cW-(40*2))) + 40; 
this.y = (Math.random() * (cH-(40*2))) + 40; 
this.xv = Math.random()*20-10; 
this.yv = Math.random()*20-10; 

}

function draw () { 
ctx.fillStyle = "black";
ctx.fillRect(0,0,cW,cH);

for(var ii=0;ii<particles.length;ii++){
    var p = particles[ii]; 
    ctx.fillStyle = "red";
    ctx.beginPath(); 
    ctx.arc(p.x,p.y,40,Math.PI*2,false); 
    ctx.fill();
}


}

setInterval(draw,30);

5 个答案:

答案 0 :(得分:5)

错误基本上意味着HTML和JavaScript代码没有正确合作,或者只是您没有正确加载脚本。
试试这个:

function init() {
  // Run your javascript code here
}

document.addEventListener("DOMContentLoaded", init, false);

希望这有帮助。

答案 1 :(得分:3)

答案就在问题之后的评论中!其他人也将它作为一个答案发布在下面,但所有信用:@elclanrs

“是的,所以画布还不存在。在画布元素之后加载脚本。 - elclanrs 2014年9月13日22:43”

答案 2 :(得分:1)

我认为你把script标签放在canvas标签的上方,请把它放在canvas标签之后。

答案 3 :(得分:0)

将脚本文件放在画布后面。这意味着在正文标记之前放下你的脚本。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>HTML5 Canvas</title>

    <link rel="shortcut icon" href="assets/1.png">
    <link rel="stylesheet" href="assets/canvas.css">
</head>
<body>
    <div class="container">
        <h2>Canvas</h2>
        <canvas id="myCanvas" width="400" height="300">

        </canvas> <!-- End Canvas -->
    </div> <!-- End Container -->
    <script src="canvas.js"></script>
</body>
</html> 

答案 4 :(得分:-1)

尝试在脚本标记之前声明canvas元素。它对我来说很好。