메뉴 건너뛰기

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 실습문제 7장 2번의 입력된 반대순으로 출력이 넘 힘듭니다 도움좀 주세요 제발 ㅠㅠ 도널드임 2019.05.27 1130
362 스크립트에서 document.write로 표 만들기 질문드립니다. 1 file 입문한 사람 2020.06.08 1114
361 open challenge 코드 11 hardworking 2017.03.27 1106
360 6장 실습문제 짝수 답좀 알려주실분? 제발요  도움 2017.09.18 1105
359 11장 실습문제 6번 arc()문제 제발요 2019.12.06 1093
358 07장 10번 답좀 알고싶습니다... 2 abcd 2017.06.11 1088
357 7장 오픈첼린지 1 Bolt 2017.04.11 1072
356 9장 연습문제 4번 1 초보 2020.10.16 1007
355 몽구스 질문있습니다 ㅜㅜ 3 몽구스초보입니다 2019.01.10 1003
354 오픈챌린지 9장 littlelion 2018.06.20 1002
353 실습문제 7장에 8번 질문 1 abcd 2017.05.09 994
352 한글html 1 키보드 향기 2020.03.29 934
351 [명품 html5+ css3+ javascript 웹 프로그래밍 수정판] 1장 실습문제 4번 질문합니다... 2 file 나능냐공도리 2021.04.17 923
350 4장 19번 1 .. 2018.09.28 906
349 8장 오픈챌린지 1 감자먹을래 2018.04.16 891
348 10장 오픈챌린지 testr 2017.11.19 888
347 11장 실습문제 6번 질문입니다. 1 file 메론 2018.11.29 884
346 10장 이론문제 10번 질문입니다. 3 하늘하 2019.05.15 849
345 6장 실습 8번 1 어려워 2018.12.18 839
344 연습문제 짝수답은어디있나요?? 2021.02.16 831
목록
Board Pagination Prev 1 ... 2 3 4 5 6 7 8 9 10 ... 21 Next
/ 21
위로