메뉴 건너뛰기

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 18236
363 이미지파일 6 스물다섯 2022.04.08 109
362 4장 171쪽 2 chu 2022.04.04 56
361 html5 태그 검사 2 열공이 2022.03.10 94
360 2장 실습문제 1번 질문드립니다! 1 망나뇽 2022.03.06 168
359 안녕하세요 관리자님 실습 문제 짝수본 zip 파일은 제공 되지 않는 건가요? 1 문의 2022.02.25 209
358 r/w는 무슨 뜻인가요? 1 ㅇㅁㅇㅈ 2021.12.22 390
357 웹 워커 13-7 결과 55가 출력되지 않습니다. 1 chg115 2021.12.03 101
356 연습문제의 미디어 파일 1 부산 2021.11.25 132
355 document.getElementBy~ 2 tc0712 2021.11.22 108
354 윈도우 브라우저와 윈도우 탭 2 tc0712 2021.11.22 57
353 5장 내용 중 궁금한 점 있습니다! 1 file 2021.10.15 214
352 5장 5-(2) 질문 있습니다! 1 2021.10.14 117
351 form 태그와 웹서버 1 tc0712 2021.09.29 103
350 HTML5+CSS3+Javascript 웹 프로그래밍[수정판] 4 file Jenny 2021.09.25 516
349 웹서버와 클라이언트 2 tc0712 2021.09.14 95
348 URL 과 IP 주소 2 tc0712 2021.09.14 120
347 태그와 속성 2 tc0712 2021.09.08 72
» 캔버스 관련 질문 1 원그리기 2021.08.22 101
345 웹 사이트 접속 질문 있습니다. 1 초심자 2021.08.21 131
344 질문 있습니다. 2 2021.08.19 134
목록
Board Pagination Prev 1 ... 2 3 4 5 6 7 8 9 10 ... 21 Next
/ 21
위로