Помогите новичку, пожалуйста! - 2
Здравствуйте, уважаемые форумчане. Начал потихоньку осваивать JS. Выполняю задачу: Вывести любой квадрат и кнопку "скрыть квадрат". Когда мы нажимаем на скрыть, квадрат исчезает и текст кнопки меняется на "показать квадрат" и так можно кликать сколько угодно раз.
Дошёл своими скудными познаниями до такого решения. Первые два клика - всё отлично. Далее - ступор. Как можно решить данную закавыку? <html run> <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> <canvas id="canvas" ></canvas> <button type="submit" id="button03">Скрыть квадрат!</button> </head> <body> <script> let ctx = canvas.getContext('2d') ctx.fillStyle = "red" ctx.fillRect(100, 30, 1000, 1000) document.getElementById("button03").onclick = () => { document.getElementById("canvas").style.visibility = 'hidden' document.getElementById("button03").innerText = 'Показать квадрат!' document.getElementById("button03").onclick = () => { document.getElementById("canvas").style.visibility = 'visible' document.getElementById("button03").innerText = 'Скрыть квадрат!' } } </script> </body> </html> |
Спасибо, вопрос закрыт!
Додумался сам. Такое решение нашёл:
<!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> <canvas id="canvas" ></canvas> <button type="submit" id="button03">Скрыть квадрат!</button> </head> <body> <script> let ctx = canvas.getContext('2d') // Назначаем тип рисования ctx.fillStyle = "red" // Назначаем цвет рисования ctx.fillRect(100, 30, 1000, 1000) // Рисуем квадрат hid = () => { document.getElementById("button03").onclick = () => { document.getElementById("canvas").style.visibility = 'hidden' document.getElementById("button03").innerText = 'Показать квадрат!' console.log('hid') document.getElementById("button03").onclick = () => { document.getElementById("canvas").style.visibility = 'visible' document.getElementById("button03").innerText = 'Скрыть квадрат!' console.log('vis') hid() } } } hid() </script> </body> </html> |
Андрей Буржуй,
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [html run] ... минимальный код страницы с вашей проблемой [/html] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Андрей Буржуй,
клик в клике не назначают, клики умножаются, это замедляет обработку кода с каждым кликом. как вариант ...
<!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>
|
| Часовой пояс GMT +3, время: 10:43. |