You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HTML Canvas无法绘制图形?Canvas新手求助解决方案

解决HTML Canvas无法绘制内容的问题

你的代码里有两个关键错误,导致无法在Canvas上绘制内容:

1. 选择器语法错误

获取Canvas元素时,document.querySelector("myCanvas")缺少ID选择器的前缀#。querySelector识别ID需要用#开头,直接写字符串会被当作标签名,而不存在<myCanvas>标签,所以根本获取不到目标元素。

正确写法应该是:

document.querySelector("#myCanvas")

2. 脚本执行时机错误

你的JS代码放在<head>中,浏览器解析到这部分代码时,<body>里的Canvas元素还没被渲染出来,此时执行let cx = ...会得到null,调用getContext自然会失败。哪怕后面有window.onload回调,cx变量已经提前被赋值为错误值了。

修复后的完整JavaScript代码

把获取Canvas和上下文的逻辑放到window.onload回调里,确保DOM完全加载后再执行:

window.onload = function drawOnCanvas() {
  let cx = document.querySelector("#myCanvas").getContext("2d");
  cx.beginPath();
  cx.moveTo(50, 10);
  cx.lineTo(10, 70);
  cx.lineTo(90, 70);
  cx.fill();
};

额外建议:给Canvas设置宽高

默认Canvas的宽高是300px×150px,建议直接通过Canvas元素的width和height属性设置尺寸,不要用CSS设置(会拉伸画布内容):

<canvas id="myCanvas" class="center" width="200" height="100"></canvas>

内容的提问来源于stack exchange,提问作者Elsa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 00:22:49