javascript - 第二次尝试创建画布并设置其宽度失败
问题描述
我创建了两个画布元素来绘制。它们都是具有不同 id 的标准元素。
我使用 javascript 选择第一个,获取上下文并为两者分配 100vw 的宽度。按预期工作。
我重复完全相同的代码来选择第二个画布,我从相同的画布 + 上下文选择器中得到一个“未定义”对象:
HTML:
<canvas id="canvas"></canvas>
<canvas id="canvasbg"></canvas>
JS:
<script>
// select fore and background canvases
var canvas = document.getElementById('canvas');
var canvasbg = document.getElementById('canvasbg'); // object found
// get canvas 2D context and set them correct size
var ctx = canvas.getContext('2d');
var ctxbg = canvasbg.getContext('2d'); // object found
resize();
function resize() {
var winWidth = window.innerWidth;
var winHeight = window.innerHeight;
ctx.canvas.width = winWidth; // works perfectly
ctx.canvas.height = winHeight; // works perfectly
ctxbg.canvasbg.width = winWidth; // console error: cannot set widht of undefined....???
ctxbg.canvasbg.height = winHeight;
}
</script>
不知道该怎么做。这应该是非常基本的。
问题可能出在哪里?
解决方案
canvas
inctx.canvas
是CanvasRenderingContext2d.canvas属性,而不是您的变量var canvas
。
因此,要从ctxbg
上下文中访问它,您还需要通过以下方式访问它.canvas
:
ctxbg.canvas.width = winWidth;
ctxbg.canvas.height = winHeight;
推荐阅读
- xamarin - MVVM Cross android 方向问题
- c# - GroupBy 有或没有总和
- android - 如何获得有限的编号。回收站视图中的数据
- sql-server - 数据库角色可以通过它无权访问的存储过程访问表
- c# - 使用 Docker 从开发到生产的不同转换日期
- boost-python - 如何在 ubuntu 系统上安装 boost_python-py38
- codeigniter - Codeigiter 多次登录,会话在 Centos 服务器上与 Cpanel 混淆
- c - 用大括号括起来的结构是什么意思?
- django - 在 django 中发送(发件人)邮件配置
- sql - 如何将 DRY 原则应用于 SQL 过程中的 SELECT?