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

JavaScript如何仅修改位置绘制多个正方形 点击按钮绘图异常排查

JavaScript Canvas绘制偏移正方形问题解决方案

核心问题梳理

  • ctx.rect()参数规则为(x坐标, y坐标, 宽度, 高度),你当前设置宽度为9、高度为100,宽高数值不一致,所以生成的是长矩形,正方形需要保证宽高数值相等。
  • 你在for循环中重复给按钮绑定了21次点击事件,点击一次按钮会同时触发21次绘制逻辑,不符合「每次点击生成一个方块」的需求。
  • 偏移量逻辑错误,不需要用for循环预生成偏移值,单独维护一个全局的x轴偏移变量,每次点击后累加即可。

修正后可运行代码

let addBlock = document.getElementById('addBlock')
var c = document.getElementById('canvas1');
var ctx = c.getContext("2d");
// x轴偏移量,初始为0,每次点击后累加
let xOffset = 0;
// 仅绑定一次点击事件
addBlock.addEventListener('click', function(){
    ctx.beginPath();
    // 宽高均设为10,保证是正方形;x轴位置随xOffset偏移
    ctx.rect(10 + xOffset, 20, 10, 10);
    ctx.fill();
    // 每次点击偏移15(10的宽度+5的间距,可自行调整数值)
    xOffset += 15;
})

内容的提问来源于stack exchange,提问作者Sola.SA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:57:03