메뉴 건너뛰기

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 18304
363 몽구스 서버 외부접속 질문드립니다. 1 명품프로그래머 2017.10.26 277
362 7장에 실습문제 4번 질문 1 asd123 2017.11.05 1634
361 7장 실습문제 1번 질문 있습니다. 7 jonjsin 2017.11.09 603
360 8장 오픈챌린지 질문있습니다 1 jsch 2017.11.12 823
359 5장 실습문제 4-2질문 2 어어엉 2017.11.12 367
358 10장 오픈챌린지 testr 2017.11.19 888
357 9장 3번 질문 있습니다. 2 jonjsin 2017.11.23 380
356 520페이지 에 쿠키쓰기 질문 1 os 2017.12.09 104
355 예제 13-5 구글 위치지도 안뜨는데요? 2 rr 2017.12.09 187
354 7장 이론문제 3번 이의제기 합니다. 3 file 혁999 2017.12.10 1280
353 2-26 오디오 삽입 모바일 문의 2 한수연 2017.12.12 101
352 짝수번 정답 3 idididid 2017.12.24 3139
351 몽구스 관련 질문입니다. 1 류경선 2018.01.20 490
350 2장 예제 2-24에 관한 질문입니다. 1 최원석 2018.01.29 191
349 3장 open challenge 질문해봅니다 6 진혁 2018.01.30 1247
348 실제로 사용해봤습니다 ! ㅠㅠ 1 갱자데쓰 2018.02.06 120
347 제1장 오픈챌린지/실습문제 질문 2 file Soyoyum 2018.02.07 637
346 저자님 책 재미있게 보고있습니다.319쪽질문입니다. 2 칼잡이최제잘 2018.02.10 176
345 357쪽 예제 8-2 윗부분 2 칼잡이최제잘 2018.02.12 130
344 저자님 367페이지 질문있습니다~~ 1 file 칼잡이최제잘 2018.02.19 592
목록
Board Pagination Prev 1 ... 2 3 4 5 6 7 8 9 10 ... 21 Next
/ 21
위로