메뉴 건너뛰기

2021.08.22 15:27

캔버스 관련 질문

조회 수 101 댓글 1

<!DOCTYPE html>

<html>

    <head>

        <title>버튼</title>

    </head>

    <body>

        <h3>버튼 누르면 원이 그려져요</h3>

        <hr>

        <canvas id="myCanvas" style="background-color: aliceblue" width="820" height="470"></canvas>

        <script>

            function click() {

                context.beginPath();

                context.arc(410, 235, 50, 0, 2*Math.PI, false);

                context.lineWidth = 10;

                context.strokeStyle = "blue";

                context.stroke();

                        }

        </script>

        <button onclick="click()">원 그리기</button>

    </body>

</html>

 

버튼을 누르면 캔버스에 지정된 원을 그리는 기능을 넣고 싶은데 작동을 안하네요. 어디가 잘못된건가요?

?
  • ?
    관리자 2021.08.22 15:47
    2 부분이 잘못되었네요.

    1. 2 라인의 수정이 필요합니다.
    <button onclick="click()">원 그리기</button> -> <button onclick="draw()">원 그리기</button>
    function click() { -> function draw() {

    왜냐하면 click 이라는 이름의 함수는 이미 document 객체에 만들어진 함수이므로 onclick="click()" 라고 하면 버튼이 클릭될 때 독자가 만든 함수가 아니라
    이미 만들어진 함수를호출합니다.
    그래서 click() 이라는 이름 대신 draw() 로 함수 이름을 바꾸면 좋겟다는 것입니다. draw() 대신에 독자가 원하는 아무 이름이나 만들어도 됩니다.


    2. context 객체를 알아내어야 하는 과정이 생략되었군요.
    다음 2 라인이 draw() 함수 앞부분에 context를 사용하기 전에 작성되어야 합니다.
    var canvas = document.getElementById("myCanvas");
    var context = canvas.getContext("2d");

    3. 결론적으로 독자의 코드를 수정하면 다음과 같습니다.
    <!DOCTYPE html>
    <html>
    <head>
    <title>버튼</title>
    </head>
    <body>
    <h3>버튼 누르면 원이 그려져요</h3>
    <hr>
    <canvas id="myCanvas" style="background-color: aliceblue" width="820" height="470"></canvas>
    <script>
    function draw() {
    var canvas = document.getElementById("myCanvas");
    var context = canvas.getContext("2d");

    context.beginPath();
    context.arc(410, 235, 50, 0, 2*Math.PI, false);
    context.lineWidth = 10;
    context.strokeStyle = "blue";
    context.stroke();
    }
    </script>
    <button onclick="draw()">원 그리기</button>
    </body>
    </html>

QnA

공부하면서 궁금했던 것을 질문해보세요.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 읽어주세요! 연습문제 및 실습문제 정답 공개에 관한 공지입니다. file 관리자 2017.06.20 18280
403 오픈챌린지 5장 ces 2024.04.19 21
402 책을 종이책으로 구매했는데 1 ddd 2024.03.21 101
401 저기 황기태 저자님 1 방문자 2024.02.10 147
400 428p 예제 9-21 키이벤트 응용 질문이 있습니다. 3 아인슈페너 2023.11.24 77
399 연습문제 3장 5번 문제 1 seungjun 2023.10.26 129
398 2장 오픈챌린 cmc 2023.09.17 148
397 웹서버소프트웨어 1 file park 2023.04.15 197
396 Sublime Text, VS code IDE설명 update바랍니다 1 삼오칠 2023.04.15 90
395 Atom은 IDE 리스트에서 삭제해주세요. 1 삼오칠 2023.04.15 84
394 예제 2-25 <video>태그로 비디오 삽입 2 file 코딩어렵다 2023.04.13 87
393 예제 2-22 2개의 인라인 프레임을 가진 웹 페이지(91p) 2 file 코딩어렵다 2023.04.12 54
392 비정형 표 만들기 다운로드 1 애치 2023.04.04 103
391 오픈챌린지 5 file ab 2023.02.17 169
390 오픈챌린지 1 ab 2023.02.16 138
389 form 태그 1 열공이 2023.01.31 88
388 예제 2-21 질문입니다. 1 file 열공이 2022.12.23 117
387 계산기 문제 변형 문의 file Mikael 2022.12.13 56
386 6장 이론문제 9번 지역,전역,블록변수 질문이요. 문신 2022.12.10 60
385 2장 이론 문제 답 문의 MIKAEL 2022.12.09 241
384 2장 이론문제 4번 답 문의 MIKAEL 2022.12.09 82
목록
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 21 Next
/ 21
위로