메뉴 건너뛰기

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 18281
402 span과 text-align : center; 에 관한 문제입니다. file 2019.10.15 279633
401 11장 6번 으엉 2019.11.27 187645
400 placeholder속성 1 khl 2017.04.08 85728
399 11장 6번 1 mj 2018.11.29 67564
398 실습문제 8-2 (3) 13412 2018.11.08 15696
397 웹 프로그래밍 책 답안지 1 mumu 2017.03.06 14076
396 살다 살다 답을 반쪽만 주는 책은 처음입니다 1 음음 2019.01.24 8848
395 Open Challenge 와 실습문제 자료 2 김원상 2017.04.29 7446
394 14장 예제 사라진 건가요 1 ... 2021.03.09 4078
393 localhost 관련 문의 3 소년정 2018.02.20 4039
392 페이지 247 에 있는 Open Challenge 05 의 CSS3로 태그 배치하기를 공부하고 있는데 질문드립니다. 1 file 워니고 2018.03.28 3878
391 ㅠㅠ..질문좀 드리겠습니다.. 1 은성 2017.04.18 3835
390 연습문제 답안지 2 vdncnck 2017.03.28 3265
389 짝수번 정답 3 idididid 2017.12.24 3135
388 8장 연습문제 실습문제 4장 2 student 2017.05.08 2872
387 10장 오픈챌린지 5 은성 2017.04.07 2247
386 open challenge 05 2 hardworking 2017.03.29 2224
385 5장 연습문제 홀수 번 질문 1 채XX 2019.06.17 1997
384 HTML을 열심히 공부중인 학생입니다 3 열심히 하자 2018.05.30 1962
목록
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 21 Next
/ 21
위로