메뉴 건너뛰기

2020.05.14 00:47

Image 객체

조회 수 126 댓글 2

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
    <style>
        img {
            height: 50px;
            width: 50px;
            margin: 0px;
        }

        table {
            border-collapse: collapse;
            border: 1px solid blue;
            padding: 0px;
        }

        td {
            border: 1px solid blue;
            width: 50px;
            height: 50px;
            padding: 0px;
        }
    </style>
</head>
<body onload="load()">
    <h3>마우스 클릭 연습</h3>
    <hr />
    <script>
        document.write("<table>");
        for (var i = 0; i < 100; i++) {
            if (i / 10 == 0) {
                document.write("<tr>")
            }
            document.write("<td id='td" + i + "'>");
            document.write("</td>");
            if (i % 10 == 9) {
                document.write("</tr>");
            }
        }
        document.write("</table>");

        function load() {
            var img = new Image();
            img.src = "banana.jpg";
            img.onload = function () {
                img.width = "50px";
                img.height = "50px";
            }
            img.onclick = function () {
                var ran = Math.floor(Math.random() * 100);
                var td = document.getElementById("td" + ran);
                td.appendChild(img);
            }

            var ran = Math.floor(Math.random() * 100);
            var td = document.getElementById("td" + ran);
            td.appendChild(img);
        }
    </script>
</body>
</html>

 

09 오픈 첼린지 문제를 위와 같이 풀었습니다.

푸는 도중에 의문이 생겼습니다.

원래 의도는 Image 객체를 클릭하면 해당 td의 자식 객체를 removeChild로 없애준 후에 랜덤으로 다른 td에 자식을 더해주려고 했습니다. (onclick 에 리스너 등록한 부분)

근데 없애지 않았는데도 이미지를 클릭하면 원래 있던 자리에서 다른 자리로 그냥 옮겨가더군요.

 

1. new Image()로 생성시킨 객체는 한 DOM 객체에만 사용할 수 있어서 다른 객체에 부여하면 옮겨가는 건가요??

2. 만약 그렇다면 자바스크립트로 생성시킨 객체들은 모두 한 DOM 객체에만 사용할 수 있는지 아니면 new Image() 객체만 그런건지??

?
  • ?
    관리자 2020.05.14 10:36
    좋은 질문입니다.
    1. 현재 new Image()로 생성한 객체가 한 개 뿐이지요.
    2. 하나의 DOM 객체는 당연히 여러 부모를 가질 수 없습니다. 이렇게 된다면 Image 객체는 누구의 자식일까요? 그리고 화면의 어디에 출력될까요? 당연히 한 부모의 자식입니다.
    그래서 DOM 객체의 부모를 옮기면 원래 부모에서 떨어져 나와 새로운 부모의 자식이 됩니다.
    3. Image 객체 뿐아니라 모든 DOM 객체도 동일합니다.

    지금 이 질문은 자바나 C#, C/C++ 등 다른 프로그램을 작성할 떄도 동일하게 만날 수 있는 문제이라서 좋은 질문이라고 하는 겁니다.
  • ?
    ㅇㅇ 2020.05.14 23:47
    감사합니다!!! 단번에 이해했습니다
    답변 감사합니다~~~!~!!

QnA

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

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 읽어주세요! 연습문제 및 실습문제 정답 공개에 관한 공지입니다. file 관리자 2017.06.20 18275
363 스크립트에서 document.write로 표 만들기 질문드립니다. 1 file 입문한 사람 2020.06.08 1108
362 open challenge 코드 11 hardworking 2017.03.27 1106
361 실습문제 7장 2번의 입력된 반대순으로 출력이 넘 힘듭니다 도움좀 주세요 제발 ㅠㅠ 도널드임 2019.05.27 1105
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 1071
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 922
351 [명품 html5+ css3+ javascript 웹 프로그래밍 수정판] 1장 실습문제 4번 질문합니다... 2 file 나능냐공도리 2021.04.17 918
350 4장 19번 1 .. 2018.09.28 906
349 8장 오픈챌린지 1 감자먹을래 2018.04.16 890
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 836
344 연습문제 짝수답은어디있나요?? 2021.02.16 830
목록
Board Pagination Prev 1 ... 2 3 4 5 6 7 8 9 10 ... 21 Next
/ 21
위로