gpt4 book ai didi

javascript - 我不知道为什么这个 Canvas 是空的

转载 作者:行者123 更新时间:2023-11-30 08:48:39 26 4
gpt4 key购买 nike

因此,我一直在研究如何用其他图像填充 Canvas 的几个示例,一旦我稍微重新排列代码,它们就会停止工作。我注意到 Canvas 上的一些行为与其他类型的 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>

...我收到消息“TypeError: aCanvas is undefined”的警报

然而,如果我尝试在 try 本身中以相同的方式定义 Canvas ...

<!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>

我收到消息“成功了”

因此,如果我想将全局变量初始化为字符串或其他简单的东西,我可以在函数中引用它。如果我尝试将全局变量初始化为 Canvas ,我的函数会继续认为它为空。这是为什么?

最佳答案

在“onload”运行之前,当 HTML 首次被解析并运行您的脚本时,文档中没有任何元素。它还没有达到 <body > 标记,所以"file"是空的。这仍然是初始化 Javascript-only 变量和其他一些东西的好时机,但实际上你的大部分起始代码应该出现在“onLoad”内部。

简而言之:代码的成功很大程度上取决于何时您调用getElementById , 不在 var aCanvas 的地方声明是。希望对您的理解有所帮助。

关于javascript - 我不知道为什么这个 Canvas 是空的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19795972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com