Андрей Буржуй,
клик в клике не назначают, клики умножаются, это замедляет обработку кода с каждым кликом.
как вариант ...
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style type="text/css">
#canvas {
border: 1px solid red;
margin: 30px auto;
display: block;
}
</style>
</head>
<body>
<canvas id="canvas" width="500" height="300"></canvas>
<button id="button03"></button>
<script>
document.addEventListener("DOMContentLoaded", function() {
let button = document.getElementById("button03");
let obj = {
x: 100,
y: 30,
width: 200,
height: 200
};
let findings = Object.values(obj);
let txt = ['Скрыть квадрат!', 'Показать квадрат!'];
let erase = 0;
let ctx = canvas.getContext('2d');
ctx.fillStyle = "red";
const draw = () => {
let method = erase ? 'clearRect' : 'fillRect';
let text = txt[erase];
ctx[method](...findings);
button.textContent = text;
erase ^= 1;
}
button.addEventListener('click', draw)
draw()
})
</script>
</body>
</html>