Показать сообщение отдельно
  #4 (permalink)  
Старый 30.12.2022, 17:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Андрей Буржуй,
клик в клике не назначают, клики умножаются, это замедляет обработку кода с каждым кликом.
как вариант ...
<!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>
Ответить с цитированием