메뉴 건너뛰기

2019.12.04 00:03

8장 실습 문제 5번

조회 수 214 댓글 3

<script>
    var imgArray = document.getElementsByTagName("img");
    for(var i=0; i<imgArray.length; i++) {
        var obj = imgArray[i];
        obj.style.zIndex = i;
        obj.style.left = "20px";
        obj.style.top = "20px";

        obj.onclick = change;
        //obj.onclick = change();하면 안먹는데 이유가 뭘까요?
    }
    function change() {
        for(var i=0; i<imgArray.length; i++) {
            var obj = imgArray[i];
            obj.style.zIndex++;
            obj.style.zIndex %= imgArray.length;
            // zIndex = zIndex % imgArray.length 이것을 왜 해야하는지, 왜 %=인지 모르겠습니다.
        }
    }
</script>

?
  • ?
    관리자 2019.12.04 10:27

    1.
    obj.onclick = change();의 의미는 change() 함수를 호출하고 그 결과 값을 obj.onclock에 넣는 것입니다.
    그러므로 클릭할 때 함수 change()가 실행되도록 하겠다면 obj.onclick = change; 로 해서 함수의 이름(실제로는 주소)를 등록해야 합니다.
    2.
    하나의 이미지를 밑으로 내리기 위해서는 모든 이미지의 zIndex를 증가시키고
    제일 큰 zIndex를 가진 이미지 즉 제일 위에 있는 이미지의 zIndex를 0으로 만들기 위한 것입니다.
    만일 이미지가 총 8개 있다면 처음에는 zIndex가 다음과 같지요
    0 1 2 3 4 5 6 7

    제일 위에 것이 아래로 내려가려면 모든 이미지의 zIndex를 증가시키면
    1 2 3 4 5 6 7 8
    이 될 것입니다. 그런데 이미지의 크기 length가 8이므로
    제일 위의 이미지의 zIndex는 8이고 이에 다음 코드가 실행되면
    obj.style.zIndex %= imgArray.length;

    8 % 8 = 0이 됩니다.
    나머지 7개의 zIndex는 1~7이므로 8로 나눈 나머지는 그대로 1~7로 있게 됩니다. 결과적으로
    다시 이미지들의 zIndex는 아래와 같이 됩니다.
    0 1 2 3 4 5 6 7

  • ?
    아리 2019.12.04 22:49
    2번은 이해했습니다. 감사합니다.
    1번은 체인지 함수를 선언하지 않고 change를 썼다면 change 가 무엇을 의미하는지요?
  • ?
    관리자 2019.12.15 23:13
    질문이 또 올라왔는지 못 보아서 답이 늦었습니다.
    change 는 함수의 이름인데 곧 함수의 주소입니다.
    이렇게 설명하면 C 언어를 배운 학생이라면 좀 더 쉽게 이해하겟지만, 함수의 주소를 주는 것이 또 어떤 의미인지 의문이 들 것 입니다.
    자바스크립트에서
    obj.onclick = change; 은
    onclick 리스너로 change 함수를 등록하는 작업이라고 생각하면 됩니다.

QnA

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

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 읽어주세요! 연습문제 및 실습문제 정답 공개에 관한 공지입니다. file 관리자 2017.06.20 18281
223 2장 오픈 챌린지 웹페이지 음악연주 질문있습니다. 1 초보자 2020.03.29 195
222 선 색 변경이 안됩니다 1 모르겠어요 2020.06.19 199
221 웹서버소프트웨어 1 file park 2023.04.15 199
220 실습문제 6장 3번-2 1 어려워 2019.11.15 200
219 명품 html5+ 수정판 p.89 예제 2-21 파일 다운로드 링크 만들기 실행 오류 문의 1 file mikael 2021.04.15 202
218 9장 실습문제 10번 질문이요 2 mmii 2021.06.06 203
217 5장 오픈챌린지 관련 시급함 2022.04.16 204
216 안녕하세요 관리자님 실습 문제 짝수본 zip 파일은 제공 되지 않는 건가요? 1 문의 2022.02.25 210
215 이거 오타인가요? 1 HTML5 2019.04.11 212
214 실습문제 5장 9번 1 file 2020.10.08 212
213 2장 오디오 실습문제에 대해서 질문이있습니다 1 ㅇㅇㅇ 2019.09.19 213
» 8장 실습 문제 5번 3 아리 2019.12.04 214
211 예제에 나오는 이미지와 동영상파일은 어디서 다운받을 수 있나요... 1 gofkdvjvl 2017.09.21 215
210 7장 실습문제 1번 질문 드립니다. 1 111 2019.10.15 215
209 6장 7번 1 이민수 2020.06.15 215
208 실습문제 6장 6-(1) 어떻게 하는 건가요? 1 초보자 2020.12.23 215
207 5장 내용 중 궁금한 점 있습니다! 1 file 2021.10.15 215
206 자바스크립트로 배경이미지슬라이드 만들어볼려고 열심히 노력하는데 1 hansung 2019.06.24 219
205 3장 실습문제 5번문제에 대해 질문이있습니다. 1 CHUL 2020.04.09 221
204 ch1 이론문제 1번 2 새내기 2021.03.06 221
목록
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 ... 21 Next
/ 21
위로