在我的控制台中,我收到错误:“未捕获的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);
答案 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元素。它对我来说很好。