我不知道为什么这个画布是空的
I don't know why this canvas is null
所以我一直在看几个如何用其他图像填充画布的例子,一旦我稍微重新排列代码,它们就会停止工作。 我注意到画布上的一些行为与其他类型的 javascript 变量相比没有意义,我想知道发生了什么。 例如,如果我做这样的事情...
<!DOCTYPE HTML>
<html>
<head>
<script>
var someVar = "This variable has been set";
function aFunction(){
alert(someVar);
};
</script>
</head>
<body onload="aFunction()">
<canvas id="aCanvas" height="100" width="100"></canvas>
</body>
</html>
。我得到一个弹出窗口,说"此变量已设置",这是我所期望的,但是如果我做这样的事情......
<!DOCTYPE HTML>
<html>
<head>
<script>
var aCanvas = document.getElementById("aCanvas");
var context;
function aFunction(){
try{
context = aCanvas.getContext("2d");
alert("it worked");
}
catch(err){
alert(err);
}
};
</script>
</head>
<body onload="aFunction()">
<canvas id="aCanvas" height="100" width="100"></canvas>
</body>
</html>
。我收到一条警报,其中包含消息"类型错误:画布未定义"
然而,如果我尝试在尝试本身中以相同的方式定义画布......
<!DOCTYPE HTML>
<html>
<head>
<script>
var aCanvas;
var context;
function aFunction(){
try{
aCanvas = document.getElementById("aCanvas");
context = aCanvas.getContext("2d");
alert("it worked");
}
catch(err){
alert(err);
}
};
</script>
</head>
<body onload="aFunction()">
<canvas id="aCanvas" height="100" width="100"></canvas>
</body>
</html>
我收到消息"它有效"
因此,如果我想将全局变量初始化为字符串或简单的东西,我可以在函数中引用它。 如果我尝试将全局变量初始化为画布,我的函数会继续认为它是空的。 为什么?
在"onload"运行之前,当HTML首次被解析并运行脚本时,文档中没有元素。它尚未到达<body
>标记,因此"文档"为空。这仍然是初始化仅限Javascript的变量以及其他一些事情的好时机,但实际上你的大部分起始代码应该发生在"onLoad"中。
简而言之:你的代码的成功很大程度上取决于你何时调用getElementById
,而不是var aCanvas
语句在哪里。希望对您有所帮助。
相关文章:
- 这个旋钮没有更新;我不知道为什么
- 我不知道为什么我的代码是错误的?又有什么错
- I'我不知道为什么我的代码没有'不起作用
- sqlite查询返回错误-can'我不知道为什么
- 我没有'我不知道为什么我的jqGrid子网格没有'不要给我看数据
- 我的素数函数坏了,但我没有;我不知道为什么
- 当我从struts2操作在js函数中获得JSONArray时,它是空的,我不知道为什么
- 可以'我不知道为什么这个数字赢了;t增量
- 我不知道为什么ng repeat在我的代码中不起作用
- 历史.推送状态错误,我不知道为什么
- 我的 innerHTML 命令没有改变任何东西,我不知道为什么
- JavaScript Validator 一直在说关于第 11 行的意外“如果”,我不知道为什么
- 我的地理位置(javascript)不起作用,我不知道为什么
- 我不知道为什么这个画布是空的
- 石头剪刀布蜥蜴斯波克游戏逻辑偶尔会输出错误的赢家,我不知道为什么
- ajax 请求失败,我不知道为什么
- 我的网站运行缓慢,我不知道为什么
- 我不知道为什么我在 JavaScript 中的函数 Flip() 没有返回任何内容.我希望它是正面或反面,它就会返回
- 帆布罪恶曲线模糊了很多.我不知道为什么它模糊了
- JQuery 无法加载.我不知道为什么.这是一个完全的谜