TypeError: canvas is null

1、错误描述

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style type="text/css">
   body{
	   background-color:#dddddd;
   }
   #canvas{
	   margin:20px;
	   padding:20px;
	   background-color:#FFFFFF;
	   border:thin inset #AAAAAA;
   }
</style>
<script type="text/javascript">
	var canvas = document.getElementById("canvas");
	var context = canvas.getContext(‘2d‘);

	context.font = "38px 微软雅黑";
	context.fillStyle = "cornflowerblue";
	context.strokeStyle = "blue";
	context.fillText(‘文件‘,canvas.width/2,canvas.height/2);
	context.strokeText(‘内容‘,canvas.width/3,canvas.height/3);
</script>
</head>

<body>
	<canvas id="canvas" width="400" height="300">
         HTML5
    </canvas>
</body>
</html>

2、错误原因

由错误提示可知,canvas为空;根据判断,静态页面中先加载了页面中JS,然后再加载页面元素,导致无法获取到元素的ID

3、解决办法

将JS部分独立成JS文件,然后在页面元素中引入

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style type="text/css">
   body{
	   background-color:#dddddd;
   }
   #canvas{
	   margin:20px;
	   padding:20px;
	   background-color:#FFFFFF;
	   border:thin inset #AAAAAA;
   }
</style>

</head>

<body>
	<canvas id="canvas" width="400" height="300">
         HTML5
    </canvas>
    <script type="text/javascript" src="ex.js"></script>
</body>
</html>

var canvas = document.getElementById("canvas");
var context = canvas.getContext(‘2d‘);

context.font = "38px 微软雅黑";
context.fillStyle = "cornflowerblue";
context.strokeStyle = "blue";
context.fillText(‘文件‘,canvas.width/2,canvas.height/2);
context.strokeText(‘内容‘,canvas.width/3,canvas.height/3);

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 17:14:45

TypeError: canvas is null的相关文章

javascript中报错"typeerror: XXX is null"

今天在写一个javascript demo的时候,为了一个小问题搞了好久,而且代码就是如下: var start   = document.getElementById('start'); start.onclick = function(){ ........... }; 之后报了这样的错误,typeerror:start is null 哎呀,之后百度一看,原来是因为自己把javascript代码写在head中了,如此粗心.之后想了一下,确实是这样的.在head定义的javascript要用

extjs调试错误 TypeError:p is null 或 TypeError: el is null

p is  null是使用ext-all.js时出现的 el is  null是使用 ext-all-debug.js时出现 出现这个问题时一度怀疑是版本问题.因为照着别人的例子学习的所有的代码 几乎一样.可就是不出来结果.纠结了老半天后来.于是将ext-all.js换成了ext-all-debug.js 出现了第二个错误.百度了一下这个问题,一般出现这种情况可能是没有渲染,或者是渲染的id没有 和页面的id对应上.

How to create water Ripple effect using HTML5 canvas

https://www.script-tutorials.com/how-to-create-water-drops-effect-using-html5-canvas/ https://www.script-tutorials.com/demos/97/index.html Rain & Water Effects(只在谷歌浏览器有效) http://tympanus.net/Development/RainEffect/#slide-1 示例(http://tympanus.net/Deve

如何使用 HTML5 Canvas 制作水波纹效果

原文:如何使用 HTML5 Canvas 制作水波纹效果 今天,我们继续分享 JavaScript 实现的效果例子,这篇文章会介绍使用 JavaScript 实现水波纹效果.水波效果以图片为背景,点击图片任意位置都会触发.有时候,我们使用普通的 Javascript 就可以创建一个很有趣的解决功能. 在线演示      源码下载 Step 1. HTML 和以前一样,首先是 HTML 代码: <!DOCTYPE html> <html> <head> <meta

canvas小图123

1 绘制扇形图 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> *{ margin: 0; padding: 0; } div{ width: 600px; height: 600px; margin:30px auto; border:1px s

使用canvas定义画板

/*===============自定义画板*/ function initpaint( canvas ){ var obj = canvas.getContext('2d'); canvas.onmousedown = function( e ){ //鼠标按下的时候 var mx = e.layerX; var my = e.layerY; obj.moveTo( mx, my); canvas.onmousemove = function( e ){ //鼠标移动的时候 var endx

安卓自己定义View进阶-Canvas之绘制基本形状

Canvas之绘制基本形状 作者微博: @GcsSloop [本系列相关文章] 在上一篇自己定义View分类与流程中我们了解自己定义View相关的基本知识,只是,这些东西依然还是理论,并不能拿来(zhuang)用(B), 这一次我们就了解一些能(zhaung)用(B)的东西. 在本篇文章中,我们先了解Canvas的基本用法,最后用一个小演示样例来结束本次教程. 一.Canvas简单介绍 Canvas我们能够称之为画布,能够在上面绘制各种东西,是安卓平台2D图形绘制的基础,非常强大. **一般来说

用canvas实现鼠标拖动绘制矩形框

需要用到jCanvas插件和jQuery. jCanvas下载:https://raw.githubusercontent.com/caleb531/jcanvas/master/jcanvas.min.js 代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>鼠标拖动绘制矩形框(canvas)</ti

用js控制canvas实现的模仿windows上单选、多选及拖动控制的toy program

功能包括:鼠标点击单选.拖动多选.ctrl+单击组合效果.对选中的单个或多个canvas图层通过鼠标拖动.方向键移动.delete删除图层等. 感觉复杂的地方主要在控制逻辑上,下面是全部代码(带注释哦),可以直接复制保存为html文件在浏览器里查看效果 <!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312&